必需的动态Zend_Form_Element_Multiselect

时间:2014-03-07 15:49:22

标签: php zend-form

我在启动时填充了<select multiple>一些值,但是通过Javascript添加了其他选项。但是我现在要验证这个元素,至少选择了其中一个选项。

我正在使用Zend_Form_Element_Multiselect来执行验证:

$tags = new Zend_Form_Element_Multiselect('cms_tags');
$tags->setRegisterInArrayValidator(false)->setRequired(true);

然而,当然,这不起作用。如何在不诉诸cms_tags函数的情况下检查isValid数组是否空虚这么简单?

PS。 Validate_Not_Empty也不起作用。

2 个答案:

答案 0 :(得分:0)

幸运的是,我的问题的解决方案是我的代码。不幸的是,Zend,至少对我而言,有一个错误 - 我的数据问题是一个空值,出现在值数组的末尾,因此cms_tags[]=5cms_tags[]=被认为是无效的验证者。如果这是一个有效的行为,我会留给Zend人,但这至少可以回答我的问题。

答案 1 :(得分:0)

尝试这样的事情:

public function isValid($data) {

    $etat_valid = parent::isValid($data);
    if(isset($data['cms_tags'])){
        // Add your validators
        // for example:
        if("" == $data['cms_tags']){
           $this->getElement('cms_tags')->addErrors(array('This value is required and can not be empty'));
           $etat_valid = false;
        }
    }
    return $etat_valid;
}