laravel 观察者模式
- 作者 : zfajax舫
- |
- 发布时间 : 6年前
- |
- 评论数 : 0
- 查看数 : 27
第一步 创建观察者文件
php artisan make:observer TopicObserver
第二步 将观察者文件和模型绑定,(这里我就不创建模型了)
\app\Providers\AppServiceProvider.php
<?php
namespace App\Providers;
use Carbon\Carbon;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* 启动自运行
*/
public function boot()
{
\App\Models\Topic::observe(\App\Observers\TopicObserver::class); #绑定观察文件
}
.
.
.
第三步 编辑观察者文件
\app\Observers\TopicObserver.php
<?php
namespace App\Observers;
use App\Models\Topic;
use App\Jobs\TranslateSlug;
/**
* Class TopicObserver
* @package App\Observers
* creating, created, updating, updated, saving,
* saved, deleting, deleted, restoring, restored
*/
class TopicObserver
{
/**
* 模型观察器在 Topic 模型保存时触发的 saving 事件中,对 excerpt 字段进行赋值:
* 这里还没有创建成功,
* @param Topic $topic
*/
public function saving(Topic $topic)
{
$topic->body = clean($topic->body, 'user_topic_body'); #防止xss攻击
}
}
扩展介绍:
retrieved, #获取到模型实例后触发
creating, #创建过程前 * 常用
created, #创建成功后 * 常用
updating, #更新过程前 * 常用
updated, #更新成功后 * 常用
saving, #代表这两个方法的集合creating,updating * 常用
saved, #代表这两个方法的集合created,updated * 常用
deleting, #删除过程前 * 常用
deleted, #删除过程后 * 常用
restoring, #恢复软删除记录前触发
restored, #恢复软删除记录后触发
总结:
- 创建观察者文件,
- 在`AppServiceProvider.php`文件中,将模型文件和观察者文件绑定
- 编辑创建好的观察者文件