我的小项目在Laravel 5.8中,我决定使用复制粘贴控制器,模型,路线和...将其升级到Laravel 7。
一切都很好,但是对于route具有关联数组,我给出了此错误:
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');
刀片模板中的错误部分:
{{ route('admin-user-login', ['user_id' => $ad->user_id]) }}
但是如果我使用像这样的索引数组,它会起作用:
{{ route('admin-user-login', [$ad->user_id]) }}
或者这个:
{{ route('admin-user-login', $ad->user_id) }}
我只需要关联数组,特别是多参数路由。
答案 0 :(得分:1)
您在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'));
或在刀片模板中:
{{ route('admin-user-login', ['user' => $user]) }}
Laravel文档中的更多信息:https://laravel.com/docs/7.x/routing#named-routes