Laravel 使用 Route::resource 生成路由需要添加前缀 /admin/
Posted
技术标签:
【中文标题】Laravel 使用 Route::resource 生成路由需要添加前缀 /admin/【英文标题】:Laravel generate the routes using Route::resource need to add prefix /admin/ 【发布时间】:2016-09-07 16:59:57 【问题描述】:例如,我有一个用于管理页面管理书籍的路由,路由设置如下:
Route::resource('books','Admin\BookController');
它自动生成了一些用于插入/更新/删除等的路由
/books/create
/books/1/edit
问题是,它是管理页面,我希望链接是
/admin/books/create
/admin/books/1/edit
如何将资源指定为 admin one ?它自动具有 /admin/ 前缀谢谢
更新:
【问题讨论】:
【参考方案1】:将您的 route
更改为
Route::resource('admin/books','Admin\BookController');
【讨论】:
【参考方案2】:如果你需要多个路由的前缀,你应该使用route group:
Route::group(['prefix' => 'admin'], function()
Route::resource('books','Admin\BookController');
);
或者,如果您只需要使用一个控制器,您可以这样做:
Route::resource('/admin/books','Admin\BookController');
【讨论】:
谢谢,但它显示语法错误,意外')',期待']' 哦,对不起,我忘记了结束]
。现已修复。
感谢您的快速修复。如果我去localhost:8000/admin/books 它会显示 Route [books.edit] 未定义。
您可以使用php artisan route:list
命令检查所有已定义的路由。如果路由在列表中,则应检查 Web 服务器配置。
错误提示您正在使用books.edit
路由,但您现在需要在视图中使用admin.books.edit
路由。查看路由列表中的name
列。这些是您应该在应用中使用的路线名称。【参考方案3】:
只是为了添加到 Alexey 的答案中。我也在组中使用命名空间。下面是例子。
Route::group([
'prefix' => 'admin',
'namespace' => 'Admin',
'middleware' => 'admin.routeNeedsPermission:view-admin-management',
], function()
Route::resource('books','BookController');
);
这样你就不需要在你的所有路由中都写 admin 了。
【讨论】:
以上是关于Laravel 使用 Route::resource 生成路由需要添加前缀 /admin/的主要内容,如果未能解决你的问题,请参考以下文章
Laravel + React,使用 Laravel 身份验证的 api