我在Yii1.x (1.1.14)
中遇到了问题,但我还没有找到解决方法。
在我的表单中,我有两个文本字段,[文本字段A]和[文本字段B]。我想一起验证它们,遵循以下规则:
我尝试过使用自定义验证,但验证了每个属性。因此,我无法一起验证它们。
有没有人知道这个问题的解决方案?
答案 0 :(得分:0)
您可以编写自己的验证器。只需在模型中添加一个方法:
/**
* @return array validation rules for model attributes.
*/
public function rules()
{
return array(
'A',
'requiredIf',
'isSet' => 'B'
);
/**
* Validator-Rule
* @param string $attribute
* @param array $params
*/
public function requiredIf($attribute, $params){
//validate
$isSet = $params['isSet'];
if(! empty($isSet)) {
$attr = $this->{$isSet};
$other = $this->{$attribute};
if(! empty($attr) && empty($other)) {
$this->addError($attribute, 'Error Text');
}
}
}
当B设置时,此验证器将抛出错误,但A不是。