eas*_*ent 2 forms validation conditional zend-framework zend-validate
我需要根据另一个字段的值为表单字段设置一些验证.
例如,如果专业是博士,那么要求专业不是空白('')或没有('无').
$professionOptions = array(
'' => 'Choose Profession',
'Dr.' => 'Dr.',
'zzz' => 'zzz',
'None' => 'None');
$this->validator->field('profession')->inArray(array_keys($professionOptions)) ->message('Invalid profession.');
$specialtySelectOptions = array(
'' => 'Choose Specialty',
'Heart' => 'Heart',
'Lungs' => 'Lungs',
'Feet' => 'Feet',
'Nose' => 'Nose');
Run Code Online (Sandbox Code Playgroud)
我如何使以下依赖于职业?
$this->validator->field('specialty')->inArray(array_keys($specialtySelectOptions))
->message('Invalid salutation.');
Run Code Online (Sandbox Code Playgroud)
您可以在表单类中扩展isValid()方法,例如
/**
* @param array $data The data from the request to validate
*/
public function isValid($data)
{
$this->checkSpecialityForProfession($data);
return parent::isValid($data)
}
protected function checkSpecialityForProfession($data)
{
if($data['profession'] === 'Dr.') {
$validator = new Zend_Validate_InArray(array(
'Heart',
'Lungs',
'Feet',
'Nose',
)
);
$this->getElement('specialty')->addValidator($validator);
}
}
Run Code Online (Sandbox Code Playgroud)