【问题标题】:Laravel - How to use the Advanced Routing properlyLaravel - 如何正确使用高级路由
【发布时间】:2014-04-14 01:53:08
【问题描述】:

我有一个分类和子分类的书单。

每个类别都有许多子类别。每个子类别都属于我的模型中的一个类别。

现在我想要这样的路线

书籍/{类别?}

书籍/{类别?}/{子类别?}

我的路线如下所示:

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

希望有人能理解我的麻烦。

【问题讨论】:

  • 您向我们展示的错误是针对第一条路线Route pattern "/categories/ 而不是第三条路线,它以category 而不是categories 开头。

标签: php laravel laravel-4


【解决方案1】:

你必须明白 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() ...

这样,如果有人给出类别和子类别,它将进入第一个,如果只有类别或没有类别,则进入第二个。

【讨论】:

    猜你喜欢
    • 2014-01-27
    • 2016-05-15
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 2017-01-23
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多