索引页的laravel路由不起作用但路由存在

时间:2017-09-03 18:53:32

标签: php laravel laravel-5.3

我遇到了非常糟糕的错误,我在这个目录“views / admin / comments / replies”中有一个名为“回复”的文件夹。和控制器名称“CommentRepliesController”。路线的定义如下:

Route::group(['middleware'=>'admin'], function(){
Route::resource('admin/users', 'AdminUsersController');
Route::resource('admin/posts', 'AdminPostsController');
Route::resource('admin/categories', 'AdminCategoriesController');
Route::resource('admin/photos','AdminPhotosController');

Route::resource('admin/comments', 'PostsCommentsController');

Route::resource('admin/comments/replies', 'CommentRepliesController');
Route::get('/admin', function (){
  return view('admin.index');
 });
 });

我的所有路线工作正常除了我试图去的回复“mysite.com/admin/comments/replies,我得到404页面。当我将目录更改为”views / admin / reply“并路由到{{ 1}}索引链接完美地工作。 我列表上的这条路线如下:

Route::resource('admin/replies', 'CommentRepliesController');

请帮我理解这一点。最好的问候

1 个答案:

答案 0 :(得分:1)

您的resource('admin/comments')路由与以下resource('admin/comments/replies')路由冲突。

admin/comments创建的其中一条路线将用于admin/comments/{comment} - 这是标准show路线。

现在考虑向admin/comments/replies发出请求。路线文件中与之匹配的第一条路线是上述评论的展示路线 - {comment}通配符匹配replies

路线的顺序非常重要,因此如果您将admin/comments/replies路线移到上面的admin/comments路线,它就应该有效。或者(更简单地说),你不应该"筑巢"像这样的资源路由,并使用不同的前缀。