我有一个资源控制器放在路由组中,如下所示:
Route::group(['as' => 'admin.', 'prefix' => 'admin'], function () {
Route::get('/', ['as' => 'index']);
Route::patch('categories/{id}', ['uses' => 'controller@restore', 'as' => 'categories.restore']);
Route::resource('categories', 'controller');
});
第一条路线为admin/
,路线名称为admin.index
,符合预期
“额外”资源路线为admin/categories/{id}
,路线名称为admin.categories.restore
但是当我们检查资源控制器的路由名称时会发生奇怪的事情
路线如预期,编辑。 admin/categories/{categories}
但路由名称前缀为admin.admin.
我知道我可以通过删除路由组中的as
并为除了资源控制器之外的组内的其他资源添加路由名称来解决问题,但是我想找到一种方法修复此问题而不编辑我的路线组。
答案 0 :(得分:0)
This评论laravel GitHub完美地描述了这个问题
发生了什么:
在laravel-5.3之前,路由组中的所有资源控制器首先查找as
声明,然后查找prefix
,并使用两者来定义其名称,例如as.prefix.resource
。
This问题显示了Laravel 5.3中的澄清和更改,以防止此行为。目前的形式:
使用Route :: resource时,URL前缀不再影响分配给路由的路由名称,因为这种行为首先破坏了使用路由名称的全部目的。