代码之家  ›  专栏  ›  技术社区  ›  naiquevin

无法使zend_filter_输入正常工作

  •  0
  • naiquevin  · 技术社区  · 15 年前

    我正在尝试让zend_filter_输入在一个简单的登录表单上按需要工作。

    这是我的密码

        $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 回复  |  直到 15 年前
        1
  •  1
  •   Bill Karwin    15 年前

    我是2007年设计和实现Zend_过滤器输入的开发人员。

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

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


    回复您的评论:您不会将$\u post作为要验证的数据传递。您必须这样做:

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

    否则:

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