Zend_Validate_Db_RecordExists或空值

时间:2014-06-27 11:28:28

标签: php zend-framework zend-validate

我有一个(希望)简单的任务,而我的google fu让我失望了。基本上,我有一个带有select的表单,其中包含一个空值,然后给出内容可以属于的id数。我想要做的是 - 验证给定的ID是否存在,但仅限于设置了值。这样:

$field = new Zend_Form_Element_Select('field');
$field->addValidator(
    new Zend_Validate_Db_RecordExists(
        array(
            'table' => 'categories',
            'field' => 'id'
        )
));

负责检查给定的id是否存在,但如果值为空,我无法找到任何省略此方法的方法。一种方法是将此逻辑移至isValid方法,但我希望有更好的方法来完成此任务。

1 个答案:

答案 0 :(得分:1)

尝试将此表单元素设置为不需要:

$field->setRequired(false);

当元素不需要且未填充时,将不会运行验证程序队列。

适用于我的快速示例:

// Zend_Form form body
$this->addElement('select', 'category', array(
        'label' => 'Choose category',
        'required' => false,
        'multiOptions' => array(
                null => 'No category selected',
                '1' => 'One',
                '2' => 'Two',   
        ),
        'validators' => array(
                array('Db_NoRecordExists', false, array(
                        'schema' => 'public',
                        'table' => 'category',
                        'field' => 'id',    
                )), 
        ),
));