我有一个书目清单,分类和子类别。
每个类别都有很多子类别。每个子类别都属于我的模型中的一个类别。
现在我希望路线像这样:
书籍/ {类别}?
和
书籍/ {类别?} / {子类别?}
我的路线如下所示:
Route::resource('categories', 'ReligionsController');
Route::resource('category/{category?}', 'ReligionBranchController');
Route::get('category/{category?}/{subcategory?}', function()
{
return 'Quitter never win';
});
现在的问题是,我的第二条路线完全可以找到,我的ReligionBranchController,但我的最后一条路线(第三条路线)根本没有工作,我收到了这条消息:
Route pattern "/categories/{category}/{{category}}" cannot reference variable name "category" more than once.
我将如何使用这样的动态路线:
example.org/category/fear/thriller
example.org/category/love/drama
example.org/category/love/science-fiction
希望有人理解我的麻烦。
答案 0 :(得分:2)
你必须承认Laravel试图以更快的速度解决路线,所以你最通用的路线必须是最后的路线,据说,我建议你改变路线的顺序:
Route::get('category/{category}/{subcategory}', function()
{
return 'Quitter never win';
});
Route::resource('category/{category?}', 'ReligionBranchController');
Route::resource('categories', 'ReligionsController');
此外,这条路线
Route::get('category/{category?}/{subcategory?}', function() ...
与
完全相同Route::get('category/{category?}', function()
如果您的用户只传递一个参数,或者根本没有参数,那么我还建议您将其更改为:
Route::get('category/{category}/{subcategory}', function() ...
这样,如果有人给出类别和子类别,它将输入第一个,如果只是类别或没有类别,则第二个。