3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravelのルーティング(resourceメソッド)

Last updated at Posted at 2023-06-05

目的

 CRUDのルーティングに関する整理

resourceメソッドの使い方

resourceメソッドを使うと、CRUDに必要なルーティングが定義されるので一行で済む。

このルートティングが、

Route::get   ('/test',              'TestController@index');
Route::get   ('/test/create',       'TestController@create');
Route::post  ('/test',              'TestController@store');
Route::get   ('/test/{test}',       'TestController@show');
Route::get   ('/test/{test}/edit',  'TestController@edit');
Route::put   ('/test/{test}',       'TestController@update'); 
Route::patch ('/test/{test}',       'TestController@update'); 
Route::delete('/test/{test}',       'TestController@destroy');

 
この一行で済む。

Route::resource('test', 'TestController');

 

HTTPメソッド URI アクション 名前付きルート
GET /test index test.index
GET /test/create create test.create
POST /test store test.store
GET /test/{test} show test.show
GET /test/{test}/edit edit test.edit
PUT/PATCH /test/{test} update test.update
DELETE /test/{test} destroy test.destroy

一部だけルーティングしたい場合

except

Route::resource ('/test','TestController', ['except' => ['create','show']]);

も一部除外したいルーティングあれば、第三引数にexceptキーの値としてアクション名を含む配列を指定すればそのアクションのルーティンがは除外される。

only

Route::resource ('/test','TestController', ['only' => ['edit']]);

逆に一部だけルーティングしたい場合は、第三引数にonlyキーの値としてアクション名を含む配列を指定すればそのアクションのみのルーティンが作成される。

パラメータ名の変更

デフォルトでそのまま引数に渡す場合は$testとして渡すことになる。

ルーティング
Route::resource('test','TestController');
コントローラ
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;

class TestController extends Controller
{
  public function show($test)
  {
    echo $test;
    return view('index');
  }
}

 
パラメータ名を変更したい場合はparametersメソッドを使って変更できる。

ルーティング
Route::resource('test','TestController')->parameters(['test' => 'sample_id']);
コントローラ
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;

class TestController extends Controller
{
  public function show($sample_id)
  {
    echo $sample_id;
    return view('index');
  }
}

感想

 当方Laravel6 のため少し書き方が古いのでこのように書いたが、新しめのバージョンでも大丈夫かと思う。一応公式サイトで確認してください。

 参考URL
 ・Laravel6:コントローラ
 ・Laravel7:コントローラ
 ・Laravel8:コントローラ
 ・Laravel9:コントローラ
 ・Laravel10:コントローラ

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?