合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
## 场景 我们需要对每一个新生成的用户自动生成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); } ~~~