Laravel 控制器:修改资源路由动作名称 1 个改进

问题

我可以在资源路由定义中修改动作默认的路由名称么?

回答

默认情况下,所有资源控制器动作都有一个路由名称。假如我们通过以下命令创建了一个 PhotoController 资源控制器:

$ php artisan make:controller PhotoController --resource

并给控制器注册一个资源路由:

Route::resource('photos', 'PhotoController');

那么这个资源控制器默认的动作及路由名称如下:

HTTP 方法 URI 动作 路由名称
GET /photos index photos.index
GET /photos/create create photos.create
POST /photos store photos.store
GET /photos/{photo} show photos.show
GET /photos/{photo}/edit edit photos.edit
PUT/PATCH /photos/{photo} update photos.update
DELETE /photos/{photo} destroy photos.destroy

如果我们想将 create 动作对应的默认路由名称 photos.create 修改为 photos.build,可以链式调用 name 方法来修改:

Route::resource('photos', 'PhotoController')->name('create', 'photos.build');

批量修改可通过 names 方法:

Route::resource('photos', 'PhotoController')->names([
    'show' => 'photos.display',
    'store' => 'photos.save',
]);

这时如果调用 route('photos.build') 全局辅助函数可以发现新的路由名称已经生效了。

参考

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!