Laravel 4 Laravel 4路线未按预期运行

Laravel 4 Laravel 4路线未按预期运行,laravel-4,Laravel 4,感谢您抽出时间阅读此问题。我到处都找遍了,找不到答案 我正在学习Laravel,正在制作一个简单的博客。我创建了一个资源控制器,如下所示: Route::resource('blog-posts', 'AdminBlogPostsController'); 我能够让所有操作正常工作(索引、显示、创建、编辑、更新、删除),没有任何问题 由于每个博客文章都属于一个类别,我希望用户按类别筛选博客文章/索引视图,因此我在资源声明之前添加了此命名路由: Route::get('blog-posts/{c

感谢您抽出时间阅读此问题。我到处都找遍了,找不到答案

我正在学习Laravel,正在制作一个简单的博客。我创建了一个资源控制器,如下所示:

Route::resource('blog-posts', 'AdminBlogPostsController');
我能够让所有操作正常工作(索引、显示、创建、编辑、更新、删除),没有任何问题

由于每个博客文章都属于一个类别,我希望用户按类别筛选博客文章/索引视图,因此我在资源声明之前添加了此命名路由:

Route::get('blog-posts/{category_id?}', 'AdminBlogPostsController@index');
Route::resource('blog-posts', 'AdminBlogPostsController');
此时,用户可以按类别进行筛选。但是,如果我导航到

blog-posts/create
浏览器只是显示博客文章/索引路径,我无法创建新记录。如果我这样评论第一条路线:

//Route::get('blog-posts/{category_id?}', 'AdminBlogPostsController@index');
Route::resource('blog-posts', 'AdminBlogPostsController');
我可以再次创建博客帖子,但无法过滤视图


您知道如何开始调试吗?

尝试在类别路由的末尾添加where条件,如下所示

Route::get('blog-posts/{category_id?}', 'AdminBlogPostsController@index')->where('category_id', '[0-9]+');
基本上,如果url的第二段是数字,这会告诉laravel路由到index方法


查看页面,了解更多的例子。

就是这样,我学到了一些新东西。非常感谢你!