对于具有类别和产品的网上商店,我有以下路线:
Route::name('shop.products.view')->get('/p/{productUrl}', 'Shop\ProductsController@view');
Route::name('shop.categories.view')->get('/c/{categoryOne}/{categoryTwo?}/{categoryThree?}', 'Shop\CategoriesController@view')
categoryTwo是categoryOne的子类别
categoryThree是类别Two的子类别
这很完美,但是我需要在.html末尾加上网址,以便该网址与旧网上商店的网址完全相同。
对于产品页面,这没问题:
Route::name('shop.products.view')->get('/p/{productUrl}.html', 'Shop\ProductsController@view');
如果我对类别页面执行此操作,则在未填写可选参数时不起作用。
Route::name('shop.categories.view')->get('/c/{categoryOne}/{categoryTwo?}/{categoryThree?}.html', 'Shop\CategoriesController@view')
结果为: domain.com/c/category1 //。html
关于如何解决这个问题的任何想法,我都会得到:
domain.com/c/category1.html
domain.com/c/category1/category2.html
domain.com/c/category1/category2/category3.html
答案 0 :(得分:0)
您有两个选择:
.html
之后使用category2和category3作为查询参数,并将其作为?category2=aaa&category3=bbb
传递; URL::action('Shop\CategoriesController@view')
中调用路由,它将可以正常工作。 Route::name('shop.products.view.')->group(function () {
Route::get('/c/{categoryOne}/{categoryTwo}/{categoryThree}.html', 'Shop\CategoriesController@view');
Route::get('/c/{categoryOne}/{categoryTwo}.html', 'Shop\CategoriesController@view');
Route::get('/c/{categoryOne}.html', 'Shop\CategoriesController@view')
});