В одном из моих файлов view
в проекте я использую валидатор when
для определения некоторой валидации для model
, но его неправильная работа может быть вызвана тем, что я не знаю, как использовать этот валидатор. Вот код модели из этой таблицыКогда валидатор в yii2 не работает должным образом
return [
[['event_id', 'user_id'], 'required'],
[['event_id', 'user_id'], 'integer'],
[['is_mandatory'], 'boolean'],
[['answer'], 'string', 'max' => 250],
[['answer'], 'required', 'when' => function($model){
return $model->is_mandatory == 1; }]
];
Вот мой view
кода да я создаю это поле на файл представления с экземпляром, поскольку для создания этих полей зависит от других входов.
$modelAnswers = new Answers();
$modelAnswers->is_mandatory = 0;
echo $form->field($modelAnswers, "answer",[
'template' => ' <div class="row"><div class="col-lg-6 col-md-6 col-sm-6 col-xs-6"><label>{label}</label></div><div class="col-lg-4 col-md-4 col-sm-6 col-xs-8">{input}{error}{hint}</div></div>'
])->textInput(['maxlength' => true]);
Но он всегда распечатывает поле по мере необходимости. Я вижу в отладчике, что $model
присваивается значение правильно. Что не так с валидатором здесь?
'$ modelAnswers-> is_mandatory = 0;' и '$ model-> is_mandatory == 1;'. Код, который вы отправили в 'when', никогда не будет завершен с этими условиями. Почтовый контроллер. – ineersa
@ineersa Я создаю этот экземпляр на странице просмотра. Таким образом, в контроллере нет ничего, связанного с моделью «Ответы». И я создаю его на странице 'view', потому что это зависит от другой входной погоды для создания этого поля или нет. –
Снова вы устанавливаете '$ modelAnswers-> is_mandatory' в' 0' и запрашиваете его как '1'. Как ваше состояние может быть правдой? – ineersa