Подтвердите тот же пароль с Zend_Filter_Input - PullRequest
0 голосов
/ 02 мая 2011

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'))), получая ту же ошибку.Кажется, я не понимаю, где эти массивы должны быть установлены.

Предложения, исправления или "halp!".

Ответы [ 2 ]

1 голос
/ 02 мая 2011

Если вы не можете использовать Zend_Valiate_*, вы не можете использовать Zend_Filter_Input, потому что Zend_Filter_Input попытается создать экземпляры валидаторов, указанных в массиве.

Кроме того, я думаю, что ваш синтаксис неправильный,Посмотрите на этот пример из руководства:

$validators = array(
    'password' => array(
        'Identical',
        'fields' => array('password1', 'password2')
    )
);
0 голосов
/ 03 мая 2011

Если бы 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

...