Laravel 7 multi parameter route error: Facade\Ignition\Exceptions\ViewException Missing required parameters for Route

Laravel 7 multi parameter route error: Facade\Ignition\Exceptions\ViewException Missing required parameters for Route

我的小项目在 Laravel 5.8,我决定使用复制粘贴控制器、模型、路线 &...

将其升级到 Laravel 7

一切都很好但是路由有一个关联数组,我给出了这个错误:

Facade\Ignition\Exceptions\ViewException
Missing required parameters for [Route: admin-user-login] [URI: admin/users/{user}/login]. (View: /home/hamidreza/projects-tmp/laravel7/resources/views/admin/ads-index.blade.php) 

路线:

Route::get('users/{user}/login', 'AdminUserController@login')->name('admin-user-login');

blade 模板中的错误部分:

{{ route('admin-user-login', ['user_id' => $ad->user_id]) }}

但是如果我像这样使用索引数组,它会起作用:

{{ route('admin-user-login', [$ad->user_id]) }}

或者这个:

{{ route('admin-user-login', $ad->user_id) }}

我只需要关联数组,特别是多参数路由。

您在 web.php 中的路线等待名为 user 的参数,但您为其添加了 user_id 参数,它会为您抛出异常。

在你的情况下应该是这样的:

// config/web.php Route::get('users/{user}/login', 'AdminUserController@login')->name('admin-user-login'); 之后,在你的控制器中:

route('admin-user-login', ['user' => $user]);

或:

$user = User::findOrFail($user_id); route('admin-user-login', compact('user'));

或在 blade 模板中: {{ route('admin-user-login', ['user' => $user]) }}

Laravel 文档中的更多信息:https://laravel.com/docs/7.x/routing#named-routes