Laravel 5.5传递URL数据时出现路由必填参数缺失报错咨询
解决Laravel 5.5中「Missing required parameters for Route」错误
这个错误其实很好理解——你定义的get:manage_products路由要求必须传一个id参数(对应URI里的{id}),但你在侧边栏视图(sidebar.blade.php)里生成这个路由的URL时,没给它传这个必填的参数,所以框架就报错啦。
我给你分几种常见情况来解决:
情况1:这个路由是用来编辑单个产品的
如果你的需求是点击侧边栏的链接进入某一个产品的管理页,那你得确保调用route()函数时传入对应的产品ID。比如你在侧边栏循环展示产品列表的话,应该这么写:
@foreach($products as $product) <li><a href="{{ route('get:manage_products', ['id' => $product->id]) }}">编辑 {{ $product->name }}</a></li> @endforeach
这里要注意路由名称是get:manage_products,和你错误提示里的一致,别写错了。
情况2:这个路由是用来展示所有产品的管理列表
如果你的需求是进入产品管理的总列表页,那说明你在web.php里定义路由的时候多写了{id}参数。这时候修改路由定义就行:
// 原来的路由(带多余的id) Route::get('admin/manage-products/{id}', 'Admin\ProductController@show')->name('get:manage_products'); // 修改为不带id的列表路由 Route::get('admin/manage-products', 'Admin\ProductController@index')->name('get:manage_products');
要是你既需要列表页又需要单个产品的管理页,那就分开定义两个不同名称的路由,避免混淆:
// 产品列表路由(无id) Route::get('admin/manage-products', 'Admin\ProductController@index')->name('get:manage_products_list'); // 单个产品管理路由(带id) Route::get('admin/manage-products/{id}', 'Admin\ProductController@show')->name('get:manage_product');
然后在视图里对应调用:列表页用{{ route('get:manage_products_list') }},单个产品页用{{ route('get:manage_product', ['id' => $product->id]) }}。
情况3:侧边栏链接是跳转到某个默认产品
这种情况比较少见,但如果你确实需要默认打开某个固定产品的管理页,直接给个固定id就行:
<a href="{{ route('get:manage_products', ['id' => 1]) }}">管理默认产品</a>
最后记得去检查你的sidebar.blade.php里的route()调用,看看是不是漏传了参数,或者路由名称和参数不匹配的问题。
内容的提问来源于stack exchange,提问作者bizz website
相关产品推荐
相关产品推荐

