Laravelのroutesのas、prefix、namespaceについて
Laravelのroutesにはasとprefix、そしてnamespaceがある。
初学者の僕にとっては、それぞれ機能が似ているから少し整理したいと思う。
namespaceについて
namespaceはpath内のcontrollerがある場所を省略orまとめることができる。
以下が例。
1 2 3 |
// 登録画面 Route::get('/register', [Auth\RegisterController::class, 'index'])->name('register'); Route::post('/register', [Auth\RegisterController::class, 'new_user']); |
このように新規登録周りについて、上記のようなroutesが書かれている。
これらroutesはcontrollerに共通して全てAuth\というコードが書かれている。
これらをまとめることができるのがnamespaceである。
以下が修正した例。
1 2 3 4 5 |
// 登録画面 Route::group(['namespace' => 'Auth'], function () { Route::get('/register', [RegisterController::class, 'index'])->name('register'); Route::post('/register', [RegisterController::class, 'new_user']); }); |
上記のように、controllerのパスからAuthが抜けてスッキリした。
prefixについて
routesをまとめるのに、他にprefixがある。
prefixは以下。
1 2 3 |
Route::get('/main/list','MainController@list')->name('main.list'); Route::get('/main/edit','MainController@edit')->name('main.edit'); Route::get('/main/search','MainController@search')->name('main.search'); |
これらはroute名に共通してmainと入っている。
これを省略できるのがprefix。
修正した例が以下。
1 2 3 4 5 |
Route::group(['prefix' => 'main'], function () { Route::get('list','MainController@list')->name('main.list'); Route::get('edit','MainController@edit')->name('main.edit'); Route::get('search','MainController@search')->name('main.search'); }); |
上記のようにrouteのuriから共通した/mainが省略できた。
asについて
最後にasを解説する。
asはrouteのnameの共通部分を省略することができる。
1 2 3 |
Route::get('list','MainController@list')->name('main.list'); Route::get('edit','MainController@edit')->name('main.edit'); Route::get('search','MainController@search')->name('main.search'); |
これをasを使ってまとめると以下。
1 2 3 4 5 |
Route::group(['as' => 'main'], function () { Route::get('list','MainController@list')->name('list'); Route::get('edit','MainController@edit')->name('edit'); Route::get('search','MainController@search')->name('search'); }); |
上記の例のように、asを用いるとname()内の共通項をまとめることができる。
-
前の記事
LaravelのFormでmethodを変える方法 2021.11.26
-
次の記事
Requestコントローラのauthorizeメソッドとrulesメソッド 2022.01.06