前面我們已經介紹完了事件模型,現在來看一個模型事件的執行個體。
我們以一個比較經典的例子開始。當一個新使用者註冊的時候,我們希望給他發一封歡迎的郵件。這個其實非常的簡單。我們只需開啟 EventServiceProvider類,然後在 parent::boot()方法後面添加下面的代碼:
User::created(function($user){ Mail::send('emails.welcome', ['user' => $user], function($message) use ($user) { $message->to($user->email, $user->first_name . ' ' . $user->last_name)->subject('Welcome to My Awesome App, '.$user->first_name.'!'); }); });
這樣就完成了,是不是非常的簡單?
註:
我們假定你在 resources/views下的 emails檔案夾中已經存在 welcome.blade.php視圖檔案,並且還假定你已經掌握了 Laravel 發送郵件的基本知識。
下面是模型事件的另一個例子:
我們假定有這樣的一個類,它的作用是當某個作者發布一本新書的時候,發送郵件通知那些關注這個作者的人,這個類名叫做 NewBookNotifier,並且發送郵件通知的方法叫做 forAuthor($authorId),其中的 $authorId是作者的主鍵。我們可以像下面這樣做:
Book::created(function($book){ $newBookNotifier = new NewBookNotifier(); $newBookNotifier->forAuthor($book->author->id); });
Done!這裡很重要的一點是它非常的簡單。還有一個重要的點,就像我們前面提到的,模型的任何代碼都不需要更改。你甚至可以添加一些更複雜的行為,但記住不要更改模型中的任何代碼。這樣做的優勢是當你測試模型的時候,它永遠不會中斷。
後面我們會看一些更複雜的情況。