首頁> php框架> YII> 主體

yii2 aftersave怎麼用

(*-*)浩
發布: 2019-11-05 11:48:06
原創
7520 人瀏覽過

yii2在儲存完之後,會呼叫aftersave方法,aftersave裡只做了一件事,就是觸發了對應的event事件,EVENT_AFTER_INSERT或EVENT_AFTER_UPDATE,可以看下Yii2的event

yii2 aftersave怎麼用

需要把使用者提交的資料儲存到look 表,同時表單中的add_img 圖片位址數組,分別儲存到lookmeida 表。 (建議學習:yii教學

這個多出來的,儲存圖片的功能,不需要改變控制器的程式碼,借助Model 的afterSave 生命週期函數,就可以自動幫我們完成。原理是look表的記錄保存(或修改)之後,會產生一個 lookid ,然後我們將這個lookid 和 mediaurl 儲存到 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; }
登入後複製

這裡只提三點,也算是幾個坑吧:

#1)afterSave 的參數,$insert 和$changedAttributes 是固定寫法,必須要有,否則報錯。

2)函數內部,在本地環境中,我之前寫的是 beforeSave 無報錯,程式運作正常;但移植到伺服器上之後,會報錯,於是改為 afterSave 後正常。

3)實測,我們新增的邏輯,必須放在 parent 函數之外,否則不會被執行(圖片已經上傳,但是lookmedia表中沒有記錄)

以上是yii2 aftersave怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!