Я следую учебному пособию по маршрутам, подписанным Laravel:
https://dev.to/fwartner/laravel-56---user-activation-with-signed-routes--notifications-oaa
Для создания подписанного маршрута автор делает следующее:
$url = URL::signedRoute('activate-email', ['user' => $this->user->id]);
обратите внимание, что «пользователю» он назначил только идентификатор ...
Позже, когда рассматриваемый пользователь нажимает на сгенерированную ссылку и другая часть кода делает это:
Route::get('/activate-email/{user}', function (Request $request) {
if (!$request->hasValidSignature()) {
abort(401, 'This link is not valid.');
}
$request->user()->update([
'is_activated' => true
]);
return 'Your account is now activated!';
})->name('activate-email');
Я смущен этой частью:
$request->user()->update([
'is_activated' => true
]);
Автор обращается к пользователю () напрямую и запускает обновление для него?
Когда я в своем собственном коде попробовал это:
dd ($ request-> user ()) Я получил ноль, и если я попытался
dd ($ request-> user) Я получил идентификационный номер пользователя.
Как автор может вызывать user () -> update, не ища пользователя. Я не вижу, куда он вводит объект User, поэтому мне кажется, что это волшебство, или, возможно, автор не полностью протестировал свой собственный код, который находится на GitHub: https://github.com/fwartner/laravel-user-activation
Так как мне ввести пользователя в маршрут, чтобы мне не пришлось явно искать его с помощью
$user = User::find($request->user);