我正在为我的元素使用这种结构:
$freetext = $this->CreateElement('textarea', 'freetext')
->setLabel('Comments')
->setAttrib('class','input-textarea')
->setOptions(array('rows' => '2', 'cols'=>'30'))
->addValidator('StringLength', false, array(0,500))
->addFilter('HtmlEntities')
->addFilter('StripTags')
->setRequired(true);
我想为此添加一个“allowEmpty”,但找不到正确的语法。我希望是这样的:
... ->addValidator('allowEmpty', false, true)
但这不起作用。
编辑 :我已将 setRequired() 更改为 true - 我希望允许空字符串作为 require 字段上的可接受值。
无论使用情况如何,如何将此选项添加到我的元素中?
最佳答案
$freetext = $this->CreateElement('textarea', 'freetext')
->addValidator('StringLength', false, array(10,500))
->setRequired(false);
您的代码应该已经这样做了,
setRequired(false)
方法可以满足您的要求,即如果未提交该值,则不会运行验证器。您是否对您编写的代码、某些验证错误消息或其他内容有任何问题?
更新
setRequired(true)
中的语义是什么并允许空字符串作为有效值?或者更好的是,如果元素可以为空,您需要什么?你在编辑中问的是没有意义的,因为如果需要一个元素,它必须有一个不同于空字符串的值。如果您需要接受空字符串作为有效值,只需使用
setRequired(false)
。当您使用 Zend_Form::getValues()
或 Zend_Form_Element::getValue()
获取表单值时,您将获得空字符串作为结果。无论如何这里是
setRequired
和 setAllowEmpty
from ZF manual 的解释:关于zend-framework - Zend 框架 - 如何允许表单元素为空字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7242703/