2010-07-10 2 views
0

Я пытаюсь заставить Zend_Filter_Input работать по мере необходимости в простой форме входа.не может заставить 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

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

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

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


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

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

Или еще так:

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

Привет, спасибо за ответ. У меня нет кода прямо сейчас. (вчера пытался это работать). Но когда я напечатал $ _POST, он показал мне оба поля и не пустые, даже если метод getMissing показал вышеприведенный массив. Я что-то пропустил? Еще одна вещь: мне действительно не нужно проверять оба этих поля для alnum, просто нужно проверить, что они присутствуют. Но пропуская часть alnum дает ошибку, что-то вроде плагина 'required' не найдено. Могу ли я просто использовать присутствие мета-команды: требуется без какого-либо другого валидатора? спасибо – naiquevin

+0

Oh. Я думал, что функция getRequest() -> getParam по умолчанию была передана, а третий аргумент был необязательным. Спасибо большое. попробуем это сейчас. – naiquevin

+0

Не обязательно. Вы можете передать $ _POST, $ _GET или любой другой ассоциативный массив. Но вы должны пройти * что-то! :-) –

Смежные вопросы