php - 实现变量回调错误消息
问题描述
我想根据其中一个语句失败返回一条可变if
消息,但我不知道如何在一个验证器中这样做。我不太确定在这种情况下最佳做法是什么。这两个if
语句都需要$entity
, 并将其拆分为单独的验证器意味着我必须多次查询它才能进行验证。
'validators' => [
[
'name' => ValidatorCallback::class,
'options' => [
'callback' => function ($value) {
$entity= $this->getObjectManager()
->getRepository(SalesChannel::class)
->find($value);
if (is_null($entity)) {
//No entity found with the given id.
return false;
}
if ($value !== $entity->getParent()->getId()) {
//Wrong parent
return false;
}
},
'messages' => [
'callbackValue' => _(
'Error, ...... is wrong'
),
],
],
],
],
解决方案
如我所见,作为 ORM 您正在使用 Doctrine 2 吗?在文档中,您可以找到有关身份映射模式实体和身份映射的部分。
最重要的信息是:
...无论您多久从 EntityManager 检索它,甚至无论您使用哪种查询方法(查找、存储库查找器或 DQL)。这称为身份映射模式,这意味着 Doctrine 保留每个实体和每个 PHP 请求检索到的 id 的映射,并不断返回相同的实例。
如您所见,您可以将其拆分为单独的验证器,而不会影响性能。
推荐阅读
- typescript - 我将如何为 TypeScript 接口强制执行许多可选属性中的至少一个?
- python - 如何找到文件中所有句子的单词错误率?
- javascript - 如何按域过滤电子邮件列表并在 JavaScript 中计数?
- conda - conda 如何确定每个文件的目的地?
- typescript - 在不覆盖原始设置文件的情况下扩展打字稿文件的“包含”
- html - HTML表格无限滚动
- c# - 如何在内存中创建 zip 文件?
- java - 如何让 Tomcat 运行 Spring/React 应用程序(显示 404 未找到)?
- kubernetes-helm - Secret.data.couchbase_password 中的 Helm v3 未知对象类型“nil”
- javascript - 如何在 Vue.js 中制作反应式窗口参数 | window.innerWidth 没有反应