Zend Framework 2/3如何禁用Multicheckbox的isEmpty错误提示?
解决Zend Framework 2/3中Multicheckbox未选时的必填错误
我之前在Zend Framework开发表单时也踩过这个坑!当使用multicheckbox组件且默认未选中任何选项提交表单时,会触发如下错误提示:
array (size=1) 'checkbox' => array (size=1) 'isEmpty' => string 'Value is required and can't be empty' (length=36)
其实这个问题很好解决,只需要让你的表单类实现InputFilterProviderInterface,然后通过getInputFilterSpecification方法禁用这个必填验证即可。下面是完整的示例代码:
use Zend\Form\Form; use Zend\InputFilter\InputFilterProviderInterface; class MyForm extends Form implements InputFilterProviderInterface { public function __construct($name = null) { parent::__construct($name); // 添加multicheckbox组件 $this->add([ 'name' => 'checkbox', 'type' => 'Zend\Form\Element\MultiCheckbox', 'options' => [ 'label' => '请选择需要的选项', 'value_options' => [ 'opt1' => '选项一', 'opt2' => '选项二', 'opt3' => '选项三', ], ], ]); // 可添加其他表单元素... } /** * 自定义输入过滤规则 */ public function getInputFilterSpecification() { return [ 'checkbox' => [ 'required' => false, // 禁用必填验证,允许空值提交 // 若需添加其他验证规则,可在此处的validators数组中配置 // 'validators' => [ ... ], ], ]; } }
原理很简单:Zend表单默认会把multicheckbox的空提交判定为必填项,我们通过将对应字段的required设为false,就告诉输入过滤器该字段允许空值,自然就不会再触发那个烦人的必填错误了。
内容的提问来源于stack exchange,提问作者Gwen Hufschmid
相关产品推荐
相关产品推荐

