Laravel动态路线问题

时间:2017-11-06 06:54:03

标签: php laravel controller routes

我尝试在Laravel中使用嵌套类别和单个项目构建类似电子商务的路由,这种方法效果很好但是有很大的例外。

这是我的路线文件的重要部分:

Route::get('/', 'PageController@home')->name('Home');
Route::get('/{category}', 'PageController@show')->where('category', '.+')->name('Category');
Route::get('/{slug}/{item_id?}', 'ItemController@show')->name('Item');

如您所见,类别和项目的逻辑在两个不同的控制器中分开。

使用www.page.com/categorywww.page.com/category/subcategory甚至www.page.com/category/subcategory/subsubcategory这些网址模式可以很好地运用类别。

但是当我尝试使用www.page.com/item-slugwww.page.com/item-slug/12345调用项目时,脚本始终使用类别路径。

在我的项目模型中,我也覆盖了路径键名称:

...
public function getRouteKeyName()
{
    return 'slug';
}

......但没有成功。

希望,你可以帮助我,或者你曾经遇到过类似的问题。

1 个答案:

答案 0 :(得分:0)

你正在使用它真正糟糕的方法。你最好为每条路线使用前缀,原因有很多(你可以谷歌)。例如,

 Route::get('/', 'PageController@home')->name('Home');
 Route::get('/categoryPrefix/{category}', 'PageController@show')>where('category', '.+')->name('Category');
 Route::get('/itmPrefix/{slug}/{item_id?}', 'ItemController@show')->name('Item');

使用定义的前缀访问这些路由。