2016-05-19 7 views
1

У меня есть три выпадающих списка для дня, месяца и года. когда я применил требуемое условие. yii2 validation показывает индивидуальную ошибку для всех трех полей. Но я хочу одно сообщение об ошибке для трех полей, таких как «dob is required».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' 
] 

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

+0

показать свой код ** модели ** и ** ** вид –

+0

Я обновил свой вопрос, пожалуйста, проверьте – garima

ответ

1

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

писать этот код в вашей модели:

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

писать этот код в ваш действий в контроллер где вы называете вид:

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

Пример:

$model = new User(); 
$model->scenario = "create"; 
+0

Похоже, она уже использовала «сценарий = профиль». Ваш ответ даст ошибку проверки для всех трех полей по-разному, например: Пожалуйста, введите DOB, введите DOB, введите DOB. Она хочет только одну ошибку проверки для всех трех одновременно, для ex- Пожалуйста, введите DOB – mohit

0

Может Вы sholud сделать что-то подобное:

['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'); 
     } 
    }  
} 
+0

Я использую вышеуказанную функцию, она не работает. – garima

+0

Я улучшил ответ, он должен работать таким образом. В следующий раз напишите что-нибудь большее, чем «не работает». –