Laravel - 缺少 [Route: reset-password.index] 所需的参数

Laravel - Missing required parameters for [Route: reset-password.index]

我只是 Laravel 的新手,所以在这些现成的项目上工作仍然不是很好, 无论如何,当用户尝试重置密码时,它会失败显示:

~/public_html$ php artisan queue:work
[2021-05-29 19:52:02][182577] Processing: App\Mail\Core\ResetPassword
[2021-05-29 19:52:02][182577] Failed:     App\Mail\Core\ResetPassword

当我检查日志文件时,我发现了这个错误:

[previous exception] [object] (Illuminate\Routing\Exceptions\UrlGenerationException(code: 0): Missing required parameters for [Route: reset-password.index] [URI: reset-password/{user}]. at /home/user/public_html/vendor/laravel/framework/src/Illuminate/Routing/Exceptions/UrlGenerationException.php:17)

作为一个新手,我不知道该怎么做,搜索了很多但没有机会。

这是我的路线:

 Route::get('reset-password/{user}', [AuthController::class, 'resetPassword'])
   28:     ->name('reset-password.index');
   29: Route::post('reset-password/{user}/update', [AuthController::class, 'updatePassword'])
   30:     ->name('reset-password.update');

这是我的 URI:

@component('mail::button', ['url' => url()->temporarySignedRoute('reset-password.index', now()->addMinutes(30), ['id' => $user->id])])
    {{ __('Reset Password') }}
@endcomponent

这是我在 AuthController 中的 resetPassword 函数:

 public function resetPassword(Request $request, User $user): View
    {
        $data = $this->service->resetPassword($request, $user->id);

        return view('core.no_header_pages.reset_password', $data);
    }

这是我的重置密码@服务:

public function resetPassword(Request $request, $id)
{
    abort_unless($request->hasValidSignature(), 401, 'Invalid Request.');

    $passwordResetLink = url()->signedRoute('reset-password.update', ['user' => $id]);

    return [
        'id' => $id,
        'passwordResetLink' => $passwordResetLink
    ];
}

有机会吗?

您的 reset-password 路由参数是 user 但您在组件中使用 id。换成 user

@component('mail::button', [
    'url' => url()->temporarySignedRoute('reset-password.index', now()->addMinutes(30),
    ['user' => $user->id])]) // passing an id but with a named parameter of `user`
    {{ __('Reset Password') }}
@endcomponent