【问题标题】:Implementing a variable callback error message实现变量回调错误消息
【发布时间】:2020-10-01 22:59:10
【问题描述】:

我想根据其中一个if 语句失败返回variable 消息,但我不知道如何在一个验证器中执行此操作。我不太确定在这种情况下最佳做法是什么。两个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'
                            ),
                        ],
                    ],
                ],
            ],

【问题讨论】:

    标签: php validation zend-framework zend-framework3 laminas


    【解决方案1】:

    正如我所见,作为 ORM,您使用的是 Doctrine 2 吗? 在文档中,您可以找到关于身份映射模式Entities and the Identity Map 的部分内容。

    最重要的信息是:

    ...无论您多久从 EntityManager 检索它,甚至无论您使用哪种查询方法(查找、存储库查找器或 DQL)。这称为身份映射模式,这意味着 Doctrine 会保留每个 PHP 请求检索到的实体和 id 的映射,并不断返回相同的实例。

    如您所见,您可以将其拆分为单独的验证器,而不会影响性能。

    【讨论】:

    • 我没有想过 ORM 完成的缓存。谢谢!这回答了我的问题!
    猜你喜欢
    • 2013-03-21
    • 1970-01-01
    • 2013-05-02
    • 2019-04-25
    • 1970-01-01
    • 2022-01-21
    • 2013-05-12
    • 2014-07-17
    • 1970-01-01
    相关资源
    最近更新 更多