NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
## 场景 我们需要对每一个新生成的用户自动生成token,如果这个方法写在控制器里会显得非常臃肿,不美观,而且token应该是在用户实例入库之前就生成好. 我们在User模型加入以下方法,在用户注册前就自动生成好token. boot() 方法会在用户模型类完成初始化之后进行加载,因此我们对事件的监听需要放在该方法中。 ~~~ public static function boot() { parent::boot(); static::creating(function($user){ $user->token = bcrypt(str_random(60)); }); } ~~~ ### 还有第二种写法 1. 在app/文件夹下建立Observers文件夹. 2. 在Observers文件夹下建立相关类. ~~~ <?php namespace App\Observers; use App\User; class UserObserver { public function creating(User $user) { $user->activation_token = bcrypt(str_random(60)); } } ~~~ 在app/Providers/EventServiceProvider.php 文件boot()方法内 ~~~ public function boot() { parent::boot(); User::observe(new UserObserver()); } ~~~ 或者在AppServiceProvider中的boot()方法注册此观察者 ~~~ public function boot() { // 为 User 模型注册观察者 User::observe(UserObserver::class); } ~~~