Laravel可选参数缺少必需参数

时间:2019-10-14 12:22:23

标签: php laravel

Route::get('/products/{page?}', 'ProductController@index')->name('products');
Route::get('/products/{category}/{page?}', 'ProductController@index')->name('products');

我创建了两条路线。

所有产品的第一个,类别的其他。

我遇到一个错误:

  

缺少[路由:产品] [URI:   产品/ {类别} / {页面?}]。

它是laravel:5.5

我正在呼叫所有这样的产品:

{{ route('products') }}

3 个答案:

答案 0 :(得分:1)

将您的路线名称更改为

Route::get('/products/{page?}', 'ProductController@index')->name('products');
Route::get('/products/{category}/{page?}', 'ProductController@index')->name('product.category');

对于产品路线:

{{ route('products') }}

对于类别路线:

{{ route('product.category') }}

答案 1 :(得分:0)

您的路线命名冲突,您需要为您的路线指定唯一的名称。

Route::get('/products/{page?}', 'ProductController@index')->name('products.page');
Route::get('/products/{category}/{page?}', 'ProductController@index')->name('products.category.page');

使用新名称呼叫路线。

{{ route('products.page') }}

如果要使用category参数获取该路线的路线。

{{ route('products.category.page', $category) }}

答案 2 :(得分:0)

两个路由不能具有相同的名称,而您正在这样做。 将您的路线名称更改为:

Route::get('/products/{page?}', 'ProductController@index')->name('products');
Route::get('/products/{category}/{page?}', 'ProductController@index')->name('category.products');

然后您可以拨打以下路线:

{{ route('products') }}
{{ route('category.products', ['category' => $category->id) }}

谢谢。