-1

a、b、c フィールドを持つフォームがあるとします。カスタム検証を使用して c を検証します。その中で、a と b の両方が既に有効かどうかを確認する必要があります。つまり、a と b が有効な場合にのみ c を検証する必要があります。

以下は私のコードのサンプルです。

public function rules() {
        return array(

                array('a', 'required'),
                array('b', 'numerical', 'min' => 18, 'max' => 99),                      
                array('c', 'mycustomvalidation')
        );
}

public function mycustomvalidation($attribute, $params) {

    if($this->validate(array('a', 'b'))) { // DO THE VALIDATION IF a & b ARE VALID ONLY

        $error = '';
        if($this->attributes[$attribute] > 1000)
            $error = $this->getAttributeLabel($attribute) . " must be lower than 1000.";

        if (!empty($error))
            $this->addError($attribute, $error);
    }
} 

これに対する解決策を見つけるのを手伝ってください。ありがとうございました!

4

1 に答える 1

0

コントローラーに次のように記述できます。

if($model->validate(array('a','b')))
{
    if($model->validate(array('c')))
    {
        $model->save()
    }
}
于 2013-10-23T08:32:39.283 に答える