添加到 Laravel 的内置注册页面 Laravel 8
Add to Laravel's built in Registration page Laravel 8
当用户在我的网站上注册时,我想将记录添加到另一个 table(位置)。
我已经通过 Socialite 进行 google 注册:
// 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',
]);
最后一段代码在位置 table 中添加了一条与新用户相关的记录。我很高兴我做到了。这是在 app\Http\Controllers\Admin 中的 UserController 中,这是我按照教程创建的文件。
我想要实现的与上面相同,但当用户使用Laravel的内置注册系统时触发。我不知道在哪里可以找到这个文件,我想将上面的最后一段代码添加到其中,这样当他们注册到我的网站时,它会自动在与新用户。
希望这是有道理的。
我浏览了 and this post,但没有看到任何对我有用/我能理解的内容。
您有多种选择。您可以覆盖 Laravel 附带的 RegisteredUserController.php 文件并在其中添加您的代码,但在用户模型上定义一个观察者 (https://laravel.com/docs/8.x/eloquent#observers) 会更容易和更整洁。
这会监视用户发生的任何 'events' 事件(例如,当他们被创建、更新或删除时)。
所以使用 artisan :
php artisan make:observer UserObserver --model=User
将在 App\Observers 处创建(如果它尚不存在)一个文件夹,并在其中创建一个名为 UserObserver.php 的文件。该文件将包含样板方法(将是空的)用于所有你能做的事情'observe',所以你想找到一个看起来像这样的方法:
public function created(User $user)
{
//
}
您会看到新创建的用户已被传递给该方法,因此您只需实施您已经拥有的代码来创建位置并根据新用户填充它。
最后,你需要告诉 Laravel Observer 存在 - 在 App\Providers\EventServiceProvider.php 中有一个 boot() 方法可能是空的 - 你需要告诉它观察 User 模型,当 User 发生某些事情时,查看新创建的 Observer 并查看它是否必须因此做任何事情。
public function boot()
{
User::observe(UserObserver::class);
}
当用户在我的网站上注册时,我想将记录添加到另一个 table(位置)。
我已经通过 Socialite 进行 google 注册:
// 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',
]);
最后一段代码在位置 table 中添加了一条与新用户相关的记录。我很高兴我做到了。这是在 app\Http\Controllers\Admin 中的 UserController 中,这是我按照教程创建的文件。
我想要实现的与上面相同,但当用户使用Laravel的内置注册系统时触发。我不知道在哪里可以找到这个文件,我想将上面的最后一段代码添加到其中,这样当他们注册到我的网站时,它会自动在与新用户。
希望这是有道理的。
我浏览了
您有多种选择。您可以覆盖 Laravel 附带的 RegisteredUserController.php 文件并在其中添加您的代码,但在用户模型上定义一个观察者 (https://laravel.com/docs/8.x/eloquent#observers) 会更容易和更整洁。
这会监视用户发生的任何 'events' 事件(例如,当他们被创建、更新或删除时)。
所以使用 artisan :
php artisan make:observer UserObserver --model=User
将在 App\Observers 处创建(如果它尚不存在)一个文件夹,并在其中创建一个名为 UserObserver.php 的文件。该文件将包含样板方法(将是空的)用于所有你能做的事情'observe',所以你想找到一个看起来像这样的方法:
public function created(User $user)
{
//
}
您会看到新创建的用户已被传递给该方法,因此您只需实施您已经拥有的代码来创建位置并根据新用户填充它。
最后,你需要告诉 Laravel Observer 存在 - 在 App\Providers\EventServiceProvider.php 中有一个 boot() 方法可能是空的 - 你需要告诉它观察 User 模型,当 User 发生某些事情时,查看新创建的 Observer 并查看它是否必须因此做任何事情。
public function boot()
{
User::observe(UserObserver::class);
}