如何在用户注册Laravel 5后运行更多逻辑


How to run more logic after user registration in Laravel 5

我在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-观察员