无法让Zend_Filter_Input正常工作

时间:2010-07-10 10:12:25

标签: php zend-framework filter

我正在尝试让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 个答案:

答案 0 :(得分:1)

我是2007年设计并实施Zend_Filter_Input的开发人员。

每个规则由关联数组键标识。在您的情况下,您有两个规则,“用户名”和“密码”。如果您的输入未通过某些规则,则错误消息会告诉您哪些规则不满足。

您的规则名称也恰好与您正在验证的表单字段的名称相对应。默认情况下,规则验证的字段与规则名称相同。


重新评论:您没有将$ _POST作为要验证的数据传递。你必须这样做:

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

或者这个:

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