ZF 1.11.3。
$validators = array(
'pass1' => array('presence' => 'required'),
'pass2' => array(array('Identical', true, 'token' => 'pass1'))
),
$input = new Zend_Filter_Input(array(), $validators, $this->_request->getParams());
if (!$input->isValid()) {
var_dump($input->getMessages());
}
使用上面的代码,我得到(实际上是firephp格式化):
['pass2'] =>
array(
['notSame'] => 'The two given tokens do not match'
)
正如您可能认为的那样,即使“pass1”和“pass2”包含相同的字符串(它基本上是密码确认表单),也会显示该错误。
我不能使用Zend_Form或addValidator()(不要问),所以我必须使用这种语法进行joggle,这就是为什么我认为它不起作用。我指的是array(array('Identical', true, 'token' => 'pass1'))
。我甚至试过array(array('Identical', true, array('token' => 'pass1')))
,得到同样的错误。我似乎不明白这些数组的设置位置。
建议,更正或“停止!”。
答案 0 :(得分:1)
如果您无法使用Zend_Valiate_*
,则无法使用Zend_Filter_Input
,因为Zend_Filter_Input
将尝试创建数组中给出的验证程序的实例。
此外,我认为你的语法错了。从手册中看这个例子:
$validators = array(
'password' => array(
'Identical',
'fields' => array('password1', 'password2')
)
);
答案 1 :(得分:0)
如果Zend_Filter_Input要使用上下文,则会验证 some_input_name
的值,而不是字符串比如some_input_name
。因为我不使用Zend_Form,所以它不能使用上下文。
Zend_Filter_Input不使用上下文,但通过Zend_Form_Element可以使用上下文。