Yii2: - Требовать одно сообщение об ошибке для трех полей

У меня есть три раскрывающихся списка для дня, месяца и года. когда я применил требуемое условие, проверка yii2 показала индивидуальную ошибку для всех трех полей. Но мне нужно одно сообщение об ошибке для трех полей, таких как «требуется доб».

посмотреть файл :

<?= $form->field($model, "month")->dropDownList([], ['class'=>'form-control day'])->label(false);?>
<?= $form->field($model, "day")->dropDownList([], ['class'=>'form-control day'])->label(false);?>
<?= $form->field($model, "year")->dropDownList([], ['class'=>'form-control year'])->label(false);?>

модель :

public $day;    
public $month;
public $year;

[['month','day','year'], 'required', 'when' => function ($model) {
    return (($model->month == "") || ($model->day == "") || ($model->year == ""));
    }, 
    'whenClient' => "function (attribute, value) {
    return ($('#user-month').val() == '' || $('#user-day').val() == '' || $('#user-year').val() == '');
    }",'on'=>'profile'
]

Этот код показывает мне сообщения об ошибках для всех трех раскрывающихся списков по отдельности. Но я хочу одно сообщение об ошибке для доб: например, «требуется доб».


person garima    schedule 19.05.2016    source источник
comment
покажи свой код model и view   -  person Yasin Patel    schedule 19.05.2016
comment
Я обновил свой вопрос, пожалуйста, проверьте   -  person garima    schedule 19.05.2016


Ответы (2)


Попробуй это :

Напишите этот код в своей Модели:

public function rules()
 {
     return [
         [['month','day','year',],'required','on'=>['create','update'],'message' => 'Please enter DOB.'],
       ];
 }

Напишите этот код в своем Action в Controller, где вы вызываете свое представление:

 $model = new YourModelName();
 $model->scenario = "create";

Пример :

 $model = new User();
 $model->scenario = "create";
person Yasin Patel    schedule 19.05.2016
comment
Похоже, она уже использовала 'scenario=profile'. Ваш ответ выдаст ошибку проверки для всех трех полей по-разному, например: Пожалуйста, введите дату рождения, Пожалуйста, введите дату рождения, Пожалуйста, введите дату рождения. Ей нужна только одна ошибка проверки сразу для всех трех, например, введите дату рождения. - person mohit; 19.05.2016

Возможно, вам следует сделать что-то более похожее на:

['month', 'validationFunction', 'skipOnEmpty' => false]
...
public function validationFunction($attribute, $params) {
    if( !$this->hasErrors() ) {
        if (!$this->month || !$this->day || !$this->year) {
            $this->addError($attribute, 'dob is required');
        }
    }    
}
person Krzysztof Gał    schedule 19.05.2016
comment
Я улучшил ответ, он должен работать таким образом. В следующий раз напишите что-то большее, чем не работает. - person Krzysztof Gał; 19.05.2016