如何在Yii 1.x中同时验证这两个属性

时间:2015-03-27 05:06:52

标签: php validation yii

我在Yii1.x (1.1.14)中遇到了问题,但我还没有找到解决方法。

在我的表单中,我有两个文本字段,[文本字段A]和[文本字段B]。我想一起验证它们,遵循以下规则:

  1. 如果A&& B为空,返回1错误消息。
    例如:验证用户名和密码,其中一个不对,输出两条消息:您的用户名或密码不对。
  2. 如果A || B可用,验证可用属性的数值。这也意味着如果两者都可用,则验证数值。
  3. 我尝试过使用自定义验证,但验证了每个属性。因此,我无法一起验证它们。

    有没有人知道这个问题的解决方案?

1 个答案:

答案 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不是。