在路线Laravel中使用产品搜索

时间:2016-04-26 21:41:50

标签: php laravel model routes

我的产品目录有这个层次结构:

产品 - >类别 - >线 - >产品

此层次结构的路线:

Route::get('/products',                                         ['as' => 'site.products.index',    'uses' => 'Site\ProductsController@index']);
Route::get('/products/{categorySlug}',                          ['as' => 'site.products.category', 'uses' => 'Site\ProductsController@category']);
Route::get('/products/{categorySlug}/{lineSlug}',               ['as' => 'site.products.line',     'uses' => 'Site\ProductsController@line']);
Route::get('/products/{categorySlug}/{lineSlug}/{productSlug}', ['as' => 'site.products.product',  'uses' => 'Site\ProductsController@product']);

之后,有一些过滤器,如椅子,书桌,桌子等。 当用户点击一个过滤器时,我将带来具有此过滤器的产品。

我想的是:

Route::get('/products/{categorySlug}/filter/{filterSlug}', ['as' => 'site.products.filter', 'uses' => 'Site\ProductsController@filter']);

但它会与其他路线发生冲突。

1 个答案:

答案 0 :(得分:1)

你应该把

Route::get('/products/{categorySlug}/filter/{filterSlug}', ['as' => 'site.products.filter', 'uses' => 'Site\ProductsController@filter']);

之前的

Route::get('/products/{categorySlug}/{lineSlug}/{productSlug}', ['as' => 'site.products.product',  'uses' => 'Site\ProductsController@product']);

这意味着laravel将尝试在另一个之前匹配filter