单字段验证
是否可以检查一个值是否已经存在于另一个实体中?因此,当用户名已经存在时,新用户将无法获得该用户名。在原则 2 中,有一些验证器检查对象是否存在或唯一对象(不知道 ZF2 验证器是否可以使用它?)。我怎样才能把它放在我的inputFilter
用户名不能重复?我的用户名现在有以下 inputFilter:
$inputFilter->add($factory->createInput(array(
'name' => 'username',
'required' => true,
'filters' => array(
array('name' => 'StripTags'),
array('name' => 'StringTrim'),
),
'validators' => array( array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
'min' => 3,
'max' => 50,
),
),
),
)));
是否可以使用理论验证器扩展此验证器,以便我可以检查是否存在重复的用户名?
多字段验证
目前我正在捕获 DBAlException,以查看是否出现问题,但在这种情况下,我希望返回一条消息,说明出现了什么问题,例如重复键或唯一约束无效。因此,该字段的消息出错了。
try {
$this->getEntityManager()->flush();
} catch (\Doctrine\DBAL\DBALException $e) {
$this->flashMessenger()->addMessage('Duplicate key, please set another name for user.');
return array(
'form' => $form,
'flashMessages' => $this->flashMessenger()->getCurrentMessages()
);
}
通过捕获 DBAlException,您无法查看哪些唯一键是无效的。例如:我有一个具有以下内容的类别实体Unique Constraint -> uq_ParentId_Name
。如何检查此约束是否对新(类别)实体有效?