Php 实现变量回调错误消息
如果语句失败,我想返回一个变量消息,该消息基于其中一个Php 实现变量回调错误消息,php,validation,zend-framework,zend-framework3,laminas,Php,Validation,Zend Framework,Zend Framework3,Laminas,如果语句失败,我想返回一个变量消息,该消息基于其中一个,但我不知道如何在一个验证器中执行该操作。我不太确定在这种情况下最好的做法是什么。这两个if语句都需要$entity,将其拆分为单独的验证器将意味着我必须多次查询它以进行验证 'validators' => [ [ 'name' => ValidatorCallback::class, 'options' => [
,但我不知道如何在一个验证器中执行该操作。我不太确定在这种情况下最好的做法是什么。这两个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,你使用的是条令2?
在文档中,您可以找到关于身份映射模式的部分
最重要的信息包括:
。。。无论您从EntityManager检索它的频率有多高,甚至无论您使用的是哪种查询方法(find、Repository Finder或DQL)。这称为身份映射模式,这意味着条令保留每个PHP请求检索到的每个实体和ID的映射,并不断返回相同的实例
如您所见,您可以将其拆分为单独的验证器,而不会影响性能。我没有想到ORM会进行缓存。谢谢这回答了我的问题!