我正在为我的元素使用这种结构:

$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() 获取表单值时,您将获得空字符串作为结果。

无论如何这里是 setRequiredsetAllowEmpty from ZF manual 的解释:

关于zend-framework - Zend 框架 - 如何允许表单元素为空字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7242703/

10-13 08:50