この記事は主に yii2 モーダル ポップアップ ウィンドウの ActiveForm ajax フォーム検証に関する情報を紹介します。非常に優れており、必要な友人は参考にすることができます。お役に立てれば幸いです。
今日のテーマでもある、yii2 ActiveFormを使用してAjaxでフォームを送信する方法について簡単に説明します。
yii2 では、ActiveForm はデフォルトでクライアント側の検証を行いますが、フォームの送信は更新不要ではありません。つまり、フォームが送信された後にページが更新されることがよくあります。リフレッシュフリー モードを有効にしたい場合は、以下に示すように、ActiveForm でenableAjaxValidation を有効にするだけです
<?php $form = ActiveForm::begin([ 'id' => 'form-id', 'enableAjaxValidation' => true, ] ); ?>
id もenableAjaxValidation も省略できないことに注意してください。
それでは、サーバー側の実装を見てみましょう
if ($model->load(Yii::$app->request->post())) { Yii::$app->response->format = yii\web\Response::FORMAT_JSON; if ($errors = \yii\widgets\ActiveForm::validate($model)) { return $errors; } else { if($model->save(false)) { return $this->redirect(['index']); } } } return $this->render('create', [ 'model' => $model, ]);
このようにして、yii2 の非同期非リフレッシュ送信フォームを簡単に実装できます。
実際、これは私が以下に言うかどうかは関係ありません。主に一部の怠け者が参考にするために書いたものです。賢い人はタイトルを読めば、ActiveForm を介してモーダル送信フォームの問題を解決する方法を理解できるでしょう。
モーダルと互換性を持たせるために、実装ではなく互換性について話していることに注意してください。参考のためにのみプログラムに若干の変更を加えています。
if ($model->load(Yii::$app->request->post())) { if ($model->save()) { if (Yii::$app->request->isAjax) { Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; return ['success' => true]; } return $this->redirect(['index']); } else { if (Yii::$app->request->isAjax) { Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; return \yii\widgets\ActiveForm::validate($model); } } } if (Yii::$app->request->isAjax) { return $this->renderAjax('create', [ 'model' => $model, ]); } else { return $this->render('create', [ 'model' => $model, ]); }
関連する推奨事項:
Yii2 で join と joinwith のマルチテーブル関連クエリを使用する方法
以上がyii2 モーダルポップアップウィンドウの ActiveForm は、ajax の非同期フォーム検証を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。