Yii Условная валидация - PullRequest
3 голосов
/ 15 июля 2011

У меня есть вопрос о проверке Yii.У меня есть выпадающий список, варианты которого Y и N. Если пользователь выбирает Y, пользователь должен объяснить, почему он выбрал Y, поэтому поле textArea станет обязательным.

Мой код для правила выглядит следующим образом.

array('explain', 'check', 'trigger'=>'med_effects'),

Проверьте, используется ли моя функция для проверки

public function check($attribute, $params)
    {
        if($this->$params['trigger'] == 0 && $this->$attribute == '') {
            $this->addError($attribute, 'Explain the effects of the medicine');
        }
    }

Значение для $this->$params['trigger'] не изменяется.Я предполагаю, потому что сохраненное значение было 0 (Y) и не изменяется, даже если пользователь выбирает N. Как я должен определить, какой вариант пользователь выбрал, когда он подает форму?

Спасибо.

1 Ответ

4 голосов
/ 15 июля 2011

Создайте свойство внутри вашей модели:

public $isDropDownChecked;

По вашему мнению, создайте раскрывающийся список, связанный с созданным новым свойством.

И верните массив правил внутри правил метода ()как это:

public function rules()
{
   $rules[] = array(); 

   if ($this->isDropDownChecked == 'Y')
        $rules[] = array('explain', 'check', 'trigger'=>'med_effects');    


   return $rules;
}
...