首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加到Laravel的内置注册页面Laravel 8

添加到Laravel的内置注册页面Laravel 8
EN

Stack Overflow用户
提问于 2021-12-09 10:48:39
回答 1查看 66关注 0票数 0

当用户在我的站点上注册时,我想向另一个表(位置)添加一个记录。

我已经把它和社交网站上的谷歌注册联系在一起了:

代码语言:javascript
复制
    // if user already found
            if( $user ) {
                // update the avatar and provider that might have changed
                $user->update([
                    'avatar' => $providerUser->avatar,
                    'provider' => $driver,
                    'provider_id' => $providerUser->id,
                    'access_token' => $providerUser->token
                ]);
            } else {
                // create a new user
                $user = User::create([
                    'name' => $providerUser->getName(),
                    'email' => $providerUser->getEmail(),
                    'avatar' => $providerUser->getAvatar(),
                    'provider' => $driver,
                    'provider_id' => $providerUser->getId(),
                    'access_token' => $providerUser->token,
                    // user can use reset password to create a password
                    'password' => ''
                ]);
            }
### this is the bit I added ###
            DB::table('locations')->insert([
                'name'=>'Practice location',
                'created_at'=> date('Y-m-d H:j:s'),
                'updated_at'=> date('Y-m-d H:j:s'),
                'user'=> $user->id,
                'url'=> 'https://sites-jk.s3.eu-west-2.amazonaws.com/seeder/dartboard.png',
            ]);

最后一个代码块在locations表中添加了与新用户相关的记录。我很高兴我做到了。这是在app\Http\Controller\Admin中的UserController中,这是我在教程之后创建的一个文件。

我想要实现的和上面一样,但是当用户使用Laravel内置的注册系统时触发。我不知道在哪里找到这个文件,我想添加最后一段代码从上面到它,所以当他们注册到我的网站时,它会自动添加一个记录在位置表有关的新用户。

希望这是合理的。

我看过这个职位这个职位,但没有发现任何对我有用的东西/我可以理解。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-09 11:24:05

有几个选项可供您选择。您可以重写Laravel附带的RegisteredUserController.php文件并在其中添加代码,但是在用户模型上定义一个观察者(https://laravel.com/docs/8.x/eloquent#observers)既简单又整洁。

它监视发生在用户身上的任何“事件”(例如,当它们被创建、更新或删除时)。

所以利用工匠:

代码语言:javascript
复制
php artisan make:observer UserObserver --model=User

将在App\观察者中创建一个文件夹(如果它还不存在),并在该文件夹中创建一个名为UserObserver.php的文件。该文件对于所有可以“观察”的内容都有样板方法(将为空),因此您希望找到如下所示的方法:

代码语言:javascript
复制
public function created(User $user)
{
    //
}

您将看到新创建的用户已经被传递给该方法,因此您只需实现已经创建位置并基于新用户填充位置的代码。

最后,您需要告诉Laravel存在观察者--在App\Providers\EventServiceProvider.php中有一个可能为空的boot()方法--您需要告诉它观察用户模型,当用户发生什么事情时,查看新创建的观察者,看看结果是否需要做任何事情。

代码语言:javascript
复制
public function boot()
{
    User::observe(UserObserver::class);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70288554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档