ホームページ  >  記事  >  バックエンド開発  >  ActiveForm ajax フォーム validation_php yii2 モーダル ポップアップ ウィンドウの例

ActiveForm ajax フォーム validation_php yii2 モーダル ポップアップ ウィンドウの例

WBOY
WBOYオリジナル
2016-06-16 08:40:55995ブラウズ

先ほど、yii2 でモーダルを使用する方法と、yii2 グリッドビュー リストの更新操作でモーダルを使用する方法について説明しましたが、モーダルは終了し、新しいトピックを開始できると思いましたが、実際には問題が発生することがよくあります。想像を超えています。モーダルの場合はそうではありません。ウィンドウから送信されたフォームをどのように確認するかという問題が再び発生しました。

まず、モーダルはさておき、yii2 ActiveForm が Ajax でフォームを送信する方法について簡単に説明します。これが今日のトピックの焦点でもあります。モーダルについては特に言うことはありません。必要に応じて後で元に戻します。

yii2 では、ActiveForm はデフォルトでクライアント側の検証を行いますが、フォームの送信は更新不要ではありません。つまり、フォームが送信された後にページが更新されることがよくあります。リフレッシュフリーモードを有効にしたい場合は、以下のように ActiveForm でenableAjaxValidationを有効にするだけです

<&#63;php $form = ActiveForm::begin([
'id' => 'form-id',
'enableAjaxValidation' => true,
]
); &#63;>

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 モーダル ポップアップ ウィンドウの ActiveForm ajax フォーム検証に関する知識です。さらに詳しく知りたい場合は、Script House の Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。