如何为 Laravel 路由名称添加前缀
P粉760675452
P粉760675452 2023-11-09 13:50:35
0
1
585

我的路线是这样的:

Route::resource('/admin/users', AppHttpControllersAdminUsersController::class);
Route::resource('/admin/posts', AppHttpControllersAdminPostsController::class);
Route::resource('/admin/categories', AppHttpControllersAdminCategoriesController::class);
Route::resource('/admin/media', AppHttpControllersAdminMediasController::class);
Route::resource('/admin/comment/replies', AppHttpControllersCommentRepliesController::class);
Route::resource('/admin/comments', AppHttpControllersPostCommentsController::class) ;

我的路线列表是

GET|HEAD        admin/categories .................... categories.index › AdminCategoriesController@index  
POST            admin/categories .................... categories.store › AdminCategoriesController@store  
GET|HEAD        admin/categories/create ........... categories.create › AdminCategoriesController@create  
GET|HEAD        admin/categories/{category} ........... categories.show › AdminCategoriesController@show  
PUT|PATCH       admin/categories/{category} ....... categories.update › AdminCategoriesController@update  
DELETE          admin/categories/{category} ......categories.destroy › AdminCategoriesController@destroy  
GET|HEAD        admin/categories/{category}/edit ...... categories.edit › AdminCategoriesController@edit  
GET|HEAD        admin/comment/replies ................... replies.index › CommentRepliesController@index  
POST            admin/comment/replies ................... replies.store › CommentRepliesController@store  
GET|HEAD        admin/comment/replies/create .......... replies.create › CommentRepliesController@create  
GET|HEAD        admin/comment/replies/{reply} ............. replies.show › CommentRepliesController@show
PUT|PATCH       admin/comment/replies/{reply} ......... replies.update › CommentRepliesController@update  
DELETE          admin/comment/replies/{reply} ....... replies.destroy › CommentRepliesController@destroy  
GET|HEAD        admin/comment/replies/{reply}/edit......... replies.edit › CommentRepliesController@edit  
GET|HEAD        admin/comments ........................... comments.index › PostCommentsController@index  
POST            admin/comments ........................... comments.store › PostCommentsController@store  
GET|HEAD        admin/comments/create .................. comments.create › PostCommentsController@create  
GET|HEAD        admin/comments/{comment} ................... comments.show › PostCommentsController@show  
PUT|PATCH       admin/comments/{comment} ............... comments.update › PostCommentsController@update  
DELETE          admin/comments/{comment} ............. comments.destroy › PostCommentsController@destroy  
GET|HEAD        admin/comments/{comment}/edit .............. comments.edit › PostCommentsController@edit  
GET|HEAD        admin/media .................................. media.index › AdminMediasController@index  
POST            admin/media .................................. media.store › AdminMediasController@store  
GET|HEAD        admin/media/create ......................... media.create › AdminMediasController@create  
GET|HEAD        admin/media/{medium} ........................... media.show › AdminMediasController@show  
PUT|PATCH       admin/media/{medium} ....................... media.update › AdminMediasController@update  
DELETE          admin/media/{medium} ..................... media.destroy › AdminMediasController@destroy  
GET|HEAD        admin/media/{medium}/edit ...................... media.edit › AdminMediasController@edit  
GET|HEAD        admin/posts ................................... posts.index › AdminPostsController@index  
POST            admin/posts ................................... posts.store › AdminPostsController@store  
GET|HEAD        admin/posts/create .......................... posts.create › AdminPostsController@create  
GET|HEAD        admin/posts/{post} .............................. posts.show › AdminPostsController@show  
PUT|PATCH       admin/posts/{post} .......................... posts.update › AdminPostsController@update  
DELETE          admin/posts/{post} ........................ posts.destroy › AdminPostsController@destroy  
GET|HEAD        admin/posts/{post}/edit ......................... posts.edit › AdminPostsController@edit  
GET|HEAD        admin/users ................................... users.index › AdminUsersController@index
POST            admin/users ................................... users.store › AdminUsersController@store  
GET|HEAD        admin/users/create .......................... users.create › AdminUsersController@create  
GET|HEAD        admin/users/{user} .............................. users.show › AdminUsersController@show  
PUT|PATCH       admin/users/{user} .......................... users.update › AdminUsersController@update  
DELETE          admin/users/{user} ........................ users.destroy › AdminUsersController@destroy  
GET|HEAD        admin/users/{user}/edit ......................... users.edit › AdminUsersController@edit  
GET|HEAD        api/user ...............................................................................

有没有办法为每个路由名称添加前缀admin.

  • users.index 将是 admin.users.index
  • users.store 将是 admin.users.store

对每个资源路由依此类推,而不执行此操作:

Route::resource('/admin/users', AppHttpControllersAdminUsersController::class, ['names'=>['index'=>'admin.users.index']]);


P粉760675452
P粉760675452

全部回复(1)
P粉460377540

很惊讶没有找到重复的内容,但您可以简单地使用带有 Router::name() 方法。请注意,我使用 对 URL 前缀执行了相同的操作Router::prefix()方法

use App\Http\Controllers as C;

Route::name("admin.")->prefix("admin")->group(function ($router) {
    Route::resource('users', C\AdminUsersController::class);
    Route::resource('posts', C\AdminPostsController::class);
    Route::resource('categories', C\AdminCategoriesController::class);
    Route::resource('media', C\AdminMediasController::class);
    Route::resource('comment/replies', C\CommentRepliesController::class);
    Route::resource('comments', C\PostCommentsController::class) ;
});

需要注意的是,虽然 prefix() 方法适用于 URL 段,因此会插入斜杠,但 name() 只是一个通用前缀并赢得不要添加任何类型的分隔符。这就是为什么我在名称中包含点。


如果您愿意,可以使用 $router 参数而不是闭包内的外观。您更喜欢哪一个只是个人喜好问题。例如:

use App\Http\Controllers as C;

Route::name("admin.")->prefix("admin")->group(function ($router) {
    $router->resource('users', C\AdminUsersController::class);
    $router->resource('posts', C\AdminPostsController::class);
    $router->resource('categories', C\AdminCategoriesController::class);
    $router->resource('media', C\AdminMediasController::class);
    $router->resource('comment/replies', C\CommentRepliesController::class);
    $router->resource('comments', C\PostCommentsController::class) ;
});
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!