Laravel 4路线未按预期工作

时间:2014-08-12 05:16:46

标签: laravel-4

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

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

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

我能够毫无问题地使所有操作正常运行(索引,显示,创建,编辑,更新,删除)。

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

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

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

blog-posts/create

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

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

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

有任何想法如何开始调试吗?

1 个答案:

答案 0 :(得分:3)

尝试在类别路径的末尾添加where条件,如此

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

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

请查看Laravel documentation页面,了解更多相关示例。