не удалось заставить Zend_Filter_Input работать правильно - PullRequest
0 голосов
/ 10 июля 2010

Я пытаюсь заставить Zend_Filter_Input работать как требуется в простой форме входа в систему.

Вот мой код

    $filters = array('username' => 'StringTrim', 'password'  => 'StringTrim');  
    $validators  = array( 
              'username' => array('Alnum', 'presence' => 'required'),
              'password' => array('Alnum', 'presence' => 'required')
    );

    $input = new Zend_Filter_Input($filters,$validators);

    print_r($input->getMissing());

и ответ такой:

Array
 (
    [username] => Array
    (
        [0] => Field 'username' is required by rule 'username', but the field is missing
    )

    [password] => Array
    (
        [0] => Field 'password' is required by rule 'password', but the field is missing
    )

  )

Меня называют официальными документами. Почему здесь говорится rule "username" and rule "password"?

Спасибо

1 Ответ

1 голос
/ 11 июля 2010

Я разработчик, который разработал и внедрил Zend_Filter_Input в 2007 году.

Каждое правило идентифицируется ключом ассоциативного массива. В вашем случае у вас есть два правила: «имя пользователя» и «пароль». Если ваш ввод не соответствует некоторым вашим правилам, сообщения об ошибках сообщают вам, какие правила не были выполнены.

Ваши имена правил также соответствуют именам полей формы, которые вы проверяете. По умолчанию поле, которое проверяет правило, совпадает с именем правила.


Ваш комментарий: вы не передаете $ _POST в качестве данных для проверки. Вы должны сделать либо это:

$input = new Zend_Filter_Input($filters,$validators,$_POST);

Или это:

$input = new Zend_Filter_Input($filters,$validators);
$input->setData($_POST):
...