我在 Laravel 5 中使用默认的用户注册器。当用户注册时, session 中存储了一些信息,所以在创建用户后我想运行一些代码来处理 session 数据,存储它并链接它给用户。我是否可以修改注册器中的创建方法:
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-events
您还可以选择模型观察者:
<?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
。
关于php - 如何在 Laravel 5 用户注册后运行更多逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28617970/