Laravelのルートで使われるRoute::resource
について、
Route::resource
はリソースコントローラという特殊なコントローラを作成し、そのルートを登録するためのメソッド。
リソースコントローラとは?
DBへのCRUD操作を行うために必要なアクション(メソッド)が定義されているコントローラ。
CRUD操作が必要なページの処理を記述するための叩き台。
▼CRUDとは?
Create(登録)、Read(読み出し)、Update(変更)、Delete(削除)の4つの機能のこと。
リソースコントローラの作成方法
$ php artisan make:controller リソースコントローラ名 --resource
--resource
はショートオプションの-r
でもOK。
▼実行例
$ php artisan make:controller TestResourceController -r
Controller created successfully.
app > Http > Controllers > TestResourceController.php が生成される。
リソースコントローラの内容
(1) public function index()
(2) public function create()
(3) public function store(Request $request)
(4) public function show($id)
(5) public function edit($id)
(6) public function update(Request $request, $id)
(7) public function destroy($id)
上記の7つのアクション(メソッド)が記載されている。
実際の処理は自分で記述する。CRUD操作に必要なメソッドの側を用意してくれている。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TestResourceController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
リソースルートの登録
作成したアクションのルートはRouteファサードのresourceメソッドで登録できる。
Route::resource('$URI', 'リソースコントローラー名')
Route::resource('aaas', 'TestResourceController');
▼作成したルートの確認
$ php artisan route:list
+--------+-----------+-------------------+---------------+-----------------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+-------------------+---------------+-----------------------------------------------------+------------+
| | POST | aaas | aaas.store | App\Http\Controllers\TestResourceController@store | web |
| | GET|HEAD | aaas | aaas.index | App\Http\Controllers\TestResourceController@index | web |
| | GET|HEAD | aaas/create | aaas.create | App\Http\Controllers\TestResourceController@create | web |
| | DELETE | aaas/{aaa} | aaas.destroy | App\Http\Controllers\TestResourceController@destroy | web |
| | PUT|PATCH | aaas/{aaa} | aaas.update | App\Http\Controllers\TestResourceController@update | web |
| | GET|HEAD | aaas/{aaa} | aaas.show | App\Http\Controllers\TestResourceController@show | web |
| | GET|HEAD | aaas/{aaa}/edit | aaas.edit | App\Http\Controllers\TestResourceController@edit | web |
+--------+-----------+-------------------+---------------+-----------------------------------------------------+------------+
各ルートに対してアクションが指定されている。
ビューを開く
あとは、各アクションの中に呼び出すビューを指定すればいい。
public function index()
{
return view('users');
}
/aaasにアクセスすると、users.blade.phpが表示される。
各アクション毎に対応するビューや処理を指定していけば完了。
まとめ
Route::resource
はCRUD操作用のアクションの叩き台が記述されたコントローラー(リソースコントローラーと呼ぶ)を登録するためのメソッド。