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和mongo怎么搭配使用

Laravel 使用外部类

Laravel + React,使用 Laravel 身份验证的 api

win 怎么laravel命令

laravel中使用的PDF扩展包——laravel-dompdf和laravel-snappy

如何在 Laravel 8 中使用 srmklive/laravel-paypal v3