我有一个(希望)简单的任务,而我的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
方法,但我希望有更好的方法来完成此任务。
答案 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',
)),
),
));