我正在尝试让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"
?
谢谢
答案 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):