Maison >développement back-end >tutoriel php >ActiveForm de la fenêtre contextuelle modale yii2 implémente la vérification de formulaire asynchrone d'ajax
Cet article présente principalement les informations pertinentes sur la vérification du formulaire ajax ActiveForm de la fenêtre contextuelle modale yii2. Il est très bon et a une valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère que cela aide tout le monde.
Donnons une explication simple sur la façon dont yii2 ActiveForm soumet des formulaires en Ajax, qui est également au centre de notre sujet d'aujourd'hui.
Dans yii2, ActiveForm effectue une vérification côté client par défaut, mais la soumission du formulaire n'est pas sans actualisation. C’est-à-dire que l’on constate souvent que la page s’actualise après la soumission du formulaire. Si vous souhaitez activer le mode sans actualisation, il vous suffit d'activer EnableAjaxValidation dans ActiveForm, comme indiqué ci-dessous
<?php $form = ActiveForm::begin([ 'id' => 'form-id', 'enableAjaxValidation' => true, ] ); ?>
Notez que ni id ni EnableAjaxValidation ne manquent.
Regardons l'implémentation côté serveur
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, ]);
De cette façon, nous pouvons simplement implémenter le formulaire de soumission asynchrone sans actualisation yii2 !
En fait, peu importe que je le dise ou non, je l'écris principalement pour référence par des paresseux. Les gens intelligents comprendront après avoir lu le titre comment résoudre le problème de la soumission modale de formulaires via ActiveForm.
Afin d'être compatible avec modal, veuillez noter que nous parlons de compatibilité plutôt que d'implémentation. Nous avons apporté de légères modifications au programme à titre de référence uniquement.
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, ]); }
Recommandations associées :
Comment utiliser join et joinwith des requêtes liées à plusieurs tables dans Yii2
Yii2 implémente la connexion Internet QQ
Yii2 implémente le contrôle des autorisations rbac
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!