我看了其他questions /谷歌搜索这个。我的问题是,当我提交带有验证码为notEmpty
的空文本框的表单时,它不会触发任何错误。Zend框架notEmpty验证器setRequired
首先,我想看看我是否了解notEmpty
和setRequired
之间的区别。据我所知,验证器notEmpty
提供一个错误,如果一个元素被提交和值为空。也就是说,如果POST数据中不存在条目(对于表单),那么如果元素不是需要,则不会生成错误。就像它只在元素为集合时才运行。除非另有说明,否则setRequired
方法将在幕后自动添加验证器notEmpty
。这确保了一个元素的入口必须存在,并且它不能为空。正确?现在
,我想在我的形式使用这个逻辑,我加入notEmpty
验证,像这样:
$username = new Zend_Form_Element_Text('txtUsername');
$username->addValidator(new Zend_Validate_NotEmpty(), true);
与同为其他文本字段。如果我提交形式不输入值,我的POST数据是这样的:
(
[txtUsername] =>
[txtPassword] =>
[txtRepeatPassword] =>
)
然而,isValid
仍计算为true
并生成任何错误消息。为什么? notEmpty
验证程序不应该确定这些值是空的,因为该元素在POST数据中有条目吗?如果我使用setRequired(true)
,它的工作原理就是我想要的。它只是我脑海中的混乱,它确定用户名不是空的,当这个值是一个空字符串。 :-)
在此先感谢。
我事先看到'setAllowEmpty',但我认为这只是另一种使用'notEmpty'的方法。你用可选的元素说明了一点。谢谢你的回答。 – Andy0708 2012-07-28 13:46:50