WinRoadのLaravel4初心者講座

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

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

RESTフルコントローラー

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

REST*フルな命名規則を使ったコントローラアクションへのルートの定義は、ルーターにRoute::controllerメソッドで、指定することが出来ます。コントローラアクションごとにルーティングする必要が無いので、記述が楽です。

RESTフルなコントローラーを定義する

RESTフルなコントローラーは、Route::controller(‘URI’,’コントローラー名’); で指定します。RESTフルコントローラーを使用するには、HTTPメソッド(GET,POST,PUT,DELETE等)をコントローラアクションの名前の前に付けて使用します。

(例) app/routes.php
Route::controller(‘home’,’HomeController’);
上記例では、http://localhost/home では、HomeController@getIndex()にルーティングしますし、http://localhost/homeへPOST送信された場合、HomeController@postIndex()にルーティングします。

HomeControllerを下記のように記述してみます。

(例) app/controllers/HomeController.php

<?php
 class HomeController extends BaseController{
 public function getIndex(){
 return View::make('home/index');
 }
 public function postIndex(){
 $search=Input::get('name');
 $data['homes']=Home::where('name','like',"%$search%")->get();
 return View::make('home/search',$data);
 }
 }
  • 3-5行目:ブラウザからhttp://localhost/home または、http://localhost/home/index へアクセするすると、getIndexが実行されます。つまり、app/views/home/index.php(または、index.blade.php)ファイルを開きます。
  • 6-10行目:上記index.phpからhttp://localhost/home へPOST送信された場合、postIndexが実行されます。つまり、受け取った’name’フィールドの値でHomeモデルを検索し、一致したデータと共に、views/home/search.phpファイルを開きます。そして、そのページで検索結果を一覧を表示するようにロジックを作成します。
  • 又、上記、3-10行目をanyIndex() で記述することも出来ます。
  • anyの場合は、全てのHTTPメソッドを受け入れますので、get や post によって挙動を変える場合は、Request::isMethod()等で受け取ったHTTPメソッドを判断し、GETの場合とPOSTの場合のロジックを同じコントローラアクションの中で書き分けます。

上記HomeControllerをanyを使って記述し直してみます。

(例) app/controllers/HomeController.php

<?php
 class HomeController extends BaseController{
 public function anyIndex(){
 if(Request::isMethod('post')){
 $search=Input::get('name');
 $data['homes']=Home::where('name','like',"%$search%")->get();
 return View::make('home/search',$data);
 }
 return View::make('home/index');
 }
  • 4行目:Request::isMethod(‘post’)で、リクエストのHTTPメソッドがPOSTかどうかを判断しています。

« »

コメントを残す

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