小编YRM*_*YRM的帖子

ZF2 inputfilter doctrine NoObjectExists编辑对象不验证

所以我得到了一个ZF2应用程序,在InputFilter中有一个Form和一个InputFilter,我有:

$this->add(
        array(
            'name'       => 'email',
            'required'   => true,
            'validators' => array(
                array(
                    'name' => 'EmailAddress'
                ),
                array(
                    'name'      => 'DoctrineModule\Validator\NoObjectExists',
                    'options' => array(
                        'object_repository' => $sm->get('doctrine.entitymanager.orm_default')->getRepository('YrmUser\Entity\User'),
                        'fields'            => 'email'
                    ),
                ),
            ),
        )
    );
Run Code Online (Sandbox Code Playgroud)

效果很好,但是当我编辑现有对象并保存它时,NoObjectExists验证器说找到匹配的对象,因此它不会验证.有这个问题的解决方案吗?或者我应该删除编辑表单上的验证器并在插入重复时捕获异常?

更新: 如何在编辑表单中使用DoctrineModule\Validator\NoObjectExists - Zend Framework 2和Doctrine 2

是同样的问题,但答案是在编辑时删除验证器,这个过程不是一个解决方案.因为你仍然必须捕获插入副本时抛出的异常.我可以做到这一点没有问题,但我要求的是一个解决方案,使它与NoObjectExists一起使用(否则,如果我必须捕获重复项的异常,那么是否使用此验证器)

更新,添加其他相关代码(我的表单和实体有更多的字段,但我删除它们,以保持在这里可读)

形成:

namespace YrmUser\Form;

use Zend\Form\Form;
use DoctrineModule\Stdlib\Hydrator\DoctrineObject as DoctrineHydrator;
use DoctrineORMModule\Stdlib\Hydrator\DoctrineEntity;

use YrmUser\Entity\User;



class UserForm extends Form
{
protected $objectManager;

/**
 * __construct description
 *
 * @param String $name form name
 * 
 * @return void …
Run Code Online (Sandbox Code Playgroud)

zend-form zend-validate zfdoctrine doctrine-orm zend-framework2

2
推荐指数
1
解决办法
2680
查看次数