2016-05-19 9 views
1

日、月、年の3つのドロップダウンがあります。必要な条件を適用したとき、yii2バリデーションは3つのフィールドすべてについて個別のエラーを表示します。しかし、 "dob is required"のような3つのフィールドに対して単一のエラーメッセージを表示したい。Yii2: - 3つのフィールドに1つのエラーメッセージが必要です

ビューファイル:

<?= $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' 
] 

私に個別にすべての3つのドロップダウンのためのエラーメッセージを示すこのコード。しかし、私は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

をご確認ください。彼女はすでに「シナリオ=プロフィール」を使っているようです。あなたの答えは、3つのフィールドすべてに対して異なった検証エラーを与えます。例えば、DOBを入力してください.DOBを入力してください.DOBを入力してください。彼女は一度に3つすべての検証エラーを1つしか望んでいません.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

私は、このように動作する必要があります。次回は「働かない」よりも何かを書く。 –

関連する問題