WinRoadのLaravel4初心者講座

次世代PHPフレームワークのLaravel4を初心者向けに解説して参ります。

Winroad徒然草の管理人がお届けします
リソースフルコントローラー

リソースフルコントローラー

このエントリーをはてなブックマークに追加

RESTフルコントローラーをもっと使いやすくしたのが、リソースフルコントローラーです。リソースフルコントローラーは、Artisanコマンドで、簡単にコントローラの基本的な部分を作成してくれます。

Artisanコマンドにより簡易作成

それでは、Artisanコマンドで、リソースフルコントローラーを作成してみましょう。コマンドプロンプトで下記のように記述します。

cd c:\xampp\htdocs\laravel
php artisan controller:make PhotoController

Laravelのインストールされているフォルダへ移動し、Artisanコマンドで、リソースフルコントローラーを作成します。

下記のようなコントローラーと、7つのコントローラアクションが作成されました。※コメントは省略しています。
(例) app/controllers/PhotoController.php

<?php
 class PhotoController extends \BaseController {
 public function index(){
 //
 }
 public function create(){
 //
 }
 public function store(){
 //
 }
 public function show($id){
 //
 }
 public function edit($id)
 {
 //
 }
 public function update($id)
 {
 //
 }
 public function destroy($id){
 //
 <span style="line-height: 1.5em;">}
 }</span>

この作成されたリソースフルコントローラーを下記のようにルーターに登録します。

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

リソースフルコントローラーにより処理されるアクション

それでは、自動生成された7つのコントローラーアクションの使い方を見てみましょう。

  • index()

    リソース(上記例では、http://localhost/photo)にGETでアクセスした場合の処理を記述します。基本的には、トップページを表示するのが一般的でしょう。※尚、photo/の後には、indexは付けてはいけません。indexを付けると、下記のshow()アクションとして処理されます。

  • create()

    リソース/create(上記例では、http://localhost/photo/create)にGETでアクセスした場合の処理を記述します。基本的には、新規作成のページを表示するために使用するのが一般的でしょう。

  • store()

    リソースにPOSTでアクセスした場合の処理を記述します。

  • show()

    リソース/{id}にGETでアクセスした場合の処理を記述します。基本的には詳細ページを表示するために使用するのが一般的でしょう。

  • edit()

    リソース/{id}/editにGETでアクセスした場合の処理を記述します。基本的には、編集用のページを表示するために使用するのが一般的でしょう。

  • update()

    リソース/{id}にPUTやPATCHでアクセスした場合の処理を記述します。基本的には、データ更新用のロジックを記述するのが一般的でしょう。

  • destroy()

    リソース/{id}にDELETEでアクセスした場合の処理を記述します。基本的には、データ削除用のロジックを記述するのが一般的でしょう。

アクションの部分指定

Route::resourceメソッドの第3引数に、配列で、’only’ や ‘except’ で指定してアクションの一部のみにリソースフルコントローラーを指定することが出来ます。

(例) app/routes.php

Route::resource('photo','PhotoController',['only'=>['index','show']]);
Route::resource('photo','PhotoController',['except'=>['create','store','update','delete']]);

リソースコントローラーの書き換え

全てのリソースコントローラアクションは、デフォルトで決められたルート名を持っていますが、第3引数のオプションのnames配列に指定することで、アクション名を書き換えることが出来ます。

(例) app/routes.php

Route::resource('photo','PhotoController',['names'=>'photo.build']);

« »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です