Nach dem Speichern ruft yii2 die Aftersave-Methode nur auf, nämlich das entsprechende Ereignisereignis EVENT_AFTER_INSERT oder EVENT_AFTER_UPDATE auszulösen. Sie können sich das Ereignis von Yii2 ansehen
Es ist notwendig, die vom Benutzer übermittelten Daten in der Look-Tabelle zu speichern und gleichzeitig das Bildadressenarray add_img im Formular zu speichern jeweils in der Lookmeida-Tabelle gespeichert. (Empfohlenes Lernen: yii-Tutorial)
Diese zusätzliche Funktion zum Speichern von Bildern erfordert keine Änderung des Controller-Codes. Mithilfe der AfterSave-Lebenszyklusfunktion von Model kann sie uns automatisch beim Fertigstellen helfen . Das Prinzip besteht darin, dass nach dem Speichern (oder Ändern) des Datensatzes in der Look-Tabelle eine Look-ID generiert wird und wir diese Look-ID und Media-URL dann in der Lookmedia-Tabelle speichern.
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; }
Ich nenne hier nur drei Punkte, die als ein paar Fallstricke angesehen werden können:
1) AfterSave-Parameter, $insert und $changedAttributes sind feste Schreibmethoden und müssen vorhanden sein , andernfalls wird ein Fehler gemeldet .
2) Innerhalb der Funktion, in der lokalen Umgebung, war das, was ich zuvor geschrieben habe, beforeSave und es wurde kein Fehler gemeldet, und das Programm lief normal, aber nach der Transplantation auf den Server wurde ein Fehler gemeldet, also war es so auf afterSave geändert und es funktionierte normal.
3) Laut tatsächlicher Messung muss unsere neue Logik außerhalb der übergeordneten Funktion platziert werden, sonst wird sie nicht ausgeführt (das Bild wurde hochgeladen, aber es gibt keinen Datensatz in der Lookmedia-Tabelle)
Das obige ist der detaillierte Inhalt vonSo verwenden Sie yii2 aftersave. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!