Laravel 文档说我应该像这样将模型事件放在 EventServiceProvider boot()
方法中。
public function boot(DispatcherContract $events)
{
Raisefund::saved(function ($project) {
//do something
});
}
但是我有很多模型想听。
所以我想知道将它全部放在 EventServiceProvider
中是否是正确的方法。
最佳答案
是的,没错,EventServiceProvider
是它的最佳位置。
但是你可以创建观察者来保持它的干净。我会给你一个简单的例子。
事件服务提供者
<?php
namespace App\Providers;
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use App\Models\Users;
use App\Observers\UserObserver;
/**
* Event service provider class
*/
class EventServiceProvider extends ServiceProvider
{
/**
* Boot function
*
* @param DispatcherContract $events
*/
public function boot(DispatcherContract $events)
{
parent::boot($events);
Users::observe(new UserObserver());
}
}
用户观察者
<?php
namespace App\Observers;
/**
* Observes the Users model
*/
class UserObserver
{
/**
* Function will be triggerd when a user is updated
*
* @param Users $model
*/
public function updated($model)
{
}
}
Observer
将是saved
、updated
、created
等功能的地方。被执行。
有关观察员的更多信息:http://laravel.com/docs/5.0/eloquent#model-observers
关于php - 我应该把模型保存事件监听器放在 laravel 5.1 的什么地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31313019/