【问题标题】:Laravel 4 route not working as expectedLaravel 4 路线未按预期工作
【发布时间】:2014-08-12 05:16:45
【问题描述】:

感谢您抽出宝贵时间阅读此问题。我到处搜索,找不到答案。

我正在学习 Laravel,正在制作一个简单的博客。我像这样创建了一个资源控制器:

Route::resource('blog-posts', 'AdminBlogPostsController');

我能够让所有操作正常工作(索引、显示、创建、编辑、更新、删除),没有任何问题。

由于每篇博文都属于一个类别,我希望用户按类别过滤 blog-posts/index 视图,所以我在资源声明之前添加了这个命名路由:

Route::get('blog-posts/{category_id?}', 'AdminBlogPostsController@index');
Route::resource('blog-posts', 'AdminBlogPostsController');

此时,用户可以按类别进行过滤。但是,如果我导航到

blog-posts/create

浏览器只显示 blog-posts/index 路由,我无法创建新记录。如果我像这样注释掉第一条路线:

//Route::get('blog-posts/{category_id?}', 'AdminBlogPostsController@index');
Route::resource('blog-posts', 'AdminBlogPostsController');

我可以再次创建博客文章,但无法过滤视图。

任何想法如何开始调试?

【问题讨论】:

    标签: laravel-4


    【解决方案1】:

    尝试像这样在类别路径的末尾添加 where 条件

    Route::get('blog-posts/{category_id?}', 'AdminBlogPostsController@index')->where('category_id', '[0-9]+');
    

    如果 url 的第二段是数字,基本上这会告诉 laravel 路由到 index 方法。

    查看Laravel documentation 页面了解更多示例。

    【讨论】:

    • 做到了,我学到了一些新东西。非常感谢!
    猜你喜欢
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 2018-04-27
    • 1970-01-01
    • 2020-04-26
    • 2021-05-06
    相关资源
    最近更新 更多