所以我得到了一个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