0

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() (不要问),所以我必须使用这种语法,这就是我认为它不起作用的原因。我指的是array(array('Identical', true, 'token' => 'pass1'))。我什至试过array(array('Identical', true, array('token' => 'pass1'))),得到同样的错误。我似乎不明白这些数组的设置位置。

建议、更正或“暂停!”。

4

2 回答 2

1

如果你不能使用Zend_Valiate_*你就不能使用Zend_Filter_Input,因为Zend_Filter_Input将尝试创建数组中给定的验证器的实例。

此外,我认为您的语法是错误的。从手册中看这个例子:

$validators = array(
    'password' => array(
        'Identical',
        'fields' => array('password1', 'password2')
    )
);
于 2011-05-02T15:52:59.653 回答
0

如果 Zend_Filter_Input 使用上下文,它将验证比较的值 some_input_name,而不是类似的字符串some_input_name。而且因为我不使用 Zend_Form,所以它不能使用上下文。

Zend_Filter_Input 不使用上下文,但通过 Zend_Form_Element 您可以使用上下文。

http://framework.zend.com/issues/browse/ZF-10673

于 2011-05-03T09:05:02.283 回答