我有一个包含许多字段的表单,其中2个包含代码。我想验证代码不匹配。这些是要素:
'code1' => array('text', array(
'required' => true,
'label' => 'form-label-code-1',
'filters' => array('StringTrim'),
'attribs' => array('placeholder' => 'Code 1'),
'decorators' => array(
'ViewHelper',
array('HtmlTag', array('tag' => 'div')),
'Errors'
),
'validators' => array(
array('Callback', true, array(
'callback' => array($cservice, 'checkCodesUsed'),
'messages' => array(
Zend_Validate_Callback::INVALID_VALUE => 'form-error-code-exists'
)))
)
)),
'code2' => array('text', array(
'required' => true,
'label' => 'form-label-code-2',
'filters' => array('StringTrim'),
'attribs' => array('placeholder' => 'Code 2'),
'decorators' => array(
'ViewHelper',
array('HtmlTag', array('tag' => 'div')),
'Errors'
),
'validators' => array(
array('Callback', true, array(
'callback' => array($cservice, 'checkCodesUsed'),
'messages' => array(
Zend_Validate_Callback::INVALID_VALUE => 'form-error-code-exists'
)))
)
)),
当前回调只检查数据库中是否已存在这些值。 如何指定具有code1和code2值的回调?我似乎无法理解zend文档。
答案 0 :(得分:0)
只需在表单中添加一个函数作为回调来解决它。
public function checkCodesNotEqual()
{
if ($this->getElement('code1')->getValue() === $this->getElement('code2')->getValue()){
return false;
}
return true;
}