Après l'enregistrement, yii2 appellera la méthode aftersave. Aftersave ne fait qu'une seule chose, qui est de déclencher l'événement correspondant, EVENT_AFTER_INSERT ou EVENT_AFTER_UPDATE. Vous pouvez jeter un œil à l'événement de Yii2
Il est nécessaire de sauvegarder les données soumises par l'utilisateur dans la table look, et en même temps, le tableau d'adresses d'image add_img dans le formulaire est enregistré respectivement dans la table lookmeida. (Apprentissage recommandé :
tutoriel yii)
Cette fonction supplémentaire d'enregistrement des images n'a pas besoin de modifier le code du contrôleur. Avec l'aide de la fonction de cycle de vie afterSave du modèle, elle peut automatiquement nous aider à terminer. . Le principe est qu'une fois l'enregistrement dans la table look sauvegardé (ou modifié), un lookid sera généré, puis nous stockerons ce lookid et ce mediaurl dans la table lookmedia.public function afterSave($insert,$changedAttributes) { if (Yii::$app->id=='app-backend'){ //保存图片字段 $add_imgarr=$this->add_img; if ($add_imgarr){ foreach (array_filter($add_imgarr) as $mediaurl){ $lookmedia=new Lookmedia(); $lookmedia->lookid=$this->lookid; $lookmedia->mediaurl=$mediaurl; $lookmedia->type=0; $lookmedia->save(); } } } if (parent::afterSave($insert,$changedAttributes)) { return true; }else return false; }Je ne mentionne ici que trois points, qui peuvent être considérés comme quelques pièges : 1) Les paramètres AfterSave, $insert et $changedAttributes sont des méthodes d'écriture fixes et doivent être présents , sinon une erreur sera signalée . 2) À l'intérieur de la fonction, dans l'environnement local, ce que j'avais écrit auparavant était beforeSave, aucune erreur n'a été signalée, et le programme a fonctionné normalement mais après la transplantation sur le serveur, une erreur a été signalée, donc c'était le cas ; changé en afterSave et cela a fonctionné normalement. 3) Selon la mesure réelle, notre nouvelle logique doit être placée en dehors de la fonction parent, sinon elle ne sera pas exécutée (l'image a été téléchargée, mais il n'y a aucun enregistrement dans la table lookmedia)
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!