フォームにユーザー名フィールドを使用していますが、私は以下のようにルールを設定します。yii2条件付き検証がサーバ側で動作していませんか?
['username', 'required','when' => function($model) {
return $model->pin == true;
}],
(すなわち)プロパティピンはその時だけ私は、ユーザー名フィールドが必要な必要なのはクライアント側で正常に動作しているが、サーバー側でこの検証falisが、私のコードで何が間違っている真実になったとき。
UPDATE:
コントローラコード
public function actionTest()
{
$model = new Test();
if ($model->load(Yii::$app->request->post()) && $model->customValidation()) {
if($model->validate())
{
//
}
}
return $this->render('testView', [
'model' => $model,
]);
}
モデル
public $username;
public $pin = false;
public function rules()
{
return [
['username', 'required','message' => 'You must enter username','when' => function($model) {
return $model->pin == true;
}],
];
}
public function customValidation()
{
if()
{
$this->pin = true;
return false;
}
else
{
return true;
}
}
ビュー
if($model->pin)
{
<?= $form->field($model, 'username')->textInput(); ?>
}
あなたがいますそれはサーバー側で失敗することを確認しますか?クライアント側ではないのですか?それが書かれている方法は、それがクライアント側で動作すべきでないことを示します。 – Bizley
はい、私はfirebugを開いてフィールドIDを変更するとその時には動作しないと確信しています – praba
'customValidation()'メソッドは機能しますか?空の 'if()'がエラーで終了します... – Bizley