我在Laravel 5中使用默认的用户注册器。当用户注册时,会话中存储了一些信息,因此在创建用户后,我想运行一些代码来处理会话数据,存储它并将其链接到用户。我可以修改注册器中的创建方法吗:
public function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password'])
]);
}
到此:
public function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password'])
]);
// do my other logic to process session data here
return $user;
}
或者有更好的方法吗?
您可以使用模型事件,将此代码放置在模型中。
public static function boot()
{
static::created(function($model)
{
//do other logic here
});
}
http://laravel.com/docs/5.0/eloquent#model-事件
您也可以选择模型观察员:
<?php namespace App'Observers;
use Illuminate'Database'Eloquent'Model as Eloquent;
class UserObserver {
public function created(Eloquent $model)
{
//do other logic
}
}
你需要一个监听器来监听这个观察者:
'App'User::observe(new 'App'Observers'UserObserver);
您可以将侦听器放在routes.php
文件中进行测试
稍后,您可以将侦听器移动到更合适的位置,例如ServiceProvider
。
http://laravel.com/docs/5.0/eloquent#model-观察员