🙃

LaravelのRoute::resource, Route::apiResourceのルート名にprefixをつける方法

2021/07/21に公開

LaravelのRoute::resourceやRoute::apiResourceにルート名にprefixをつけたい場合があったので、調べて実装してみました。

Laravelのルーティングで Route::resourceを用いると勝手に自動でルート名がつきます

Route::resource('users', 'UserController');
Verb URI RouteName
GET /users users.index
GET /users/create users.create
POST /users users.store
GET /users/{user} users.show
GET /users/{user}/edit users.edit
PU/PATCH /users/{user} users.update
DELETE /users/{user} users.destroy

このルート名にprefixを付ける場合は第三オプションにasをつけてあげます。

Route::resource('users', 'UserController', ['as' => 'admin']);

するとルート名はこのように変化します

Verb URI RouteName
GET /users admin.users.index
GET /users/create admin.users.create
POST /users admin.users.store
GET /users/{user} admin.users.show
GET /users/{user}/edit admin.users.edit
PU/PATCH /users/{user} admin.users.update
DELETE /users/{user} admin.users.destroy

ちなみに、このRoute::resourceだけでなく、他のところもルート名にprefixを付けたい場合は、ルートグループにasを指定すればOKです。

例えばこのような感じです。

Route::prefix('admin')->as('admin')->group(function () {
    Route::resource('users', 'UserController');
});

というわけで今回はルート名にprefixをつける方法を使ってみました。
また何か学んだことがあったらどんどん発信していきたいと思います!

Discussion