WinRoadのLaravel4初心者講座

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

Winroad徒然草の管理人がお届けします
基本的なコントローラー

基本的なコントローラー

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

Laravelでは、routes.phpにルーティングを記述しますので、全てのルートのロジックをこのroutes.phpだけに記述することが出来ます。

只、数ページから10数ページ程度のサイトならこれでもいいと思うのですが、数十ページ、あるいは数百ページに及ぶサイトを構築しようとした場合、かなり管理しづらくなります。

そこで、コントローラクラスごとに管理することにより中規模から、大規模なサイトも構築することができるようになります。

コントローラーは関連したルートごとのロジックをクラスにまとめると同時に、自動的な依存性の注入*など、より高度なフレームワークの機能が使える利点があります。

基本的にコントローラーは、app/controllersフォルダに配置し、アッパーキャメル記法で、コントローラ名+Controller.php(つまり、UserController.php や HomeController.php) のような名称で登録します。

下記にコントローラークラスの例を記述します。

<?php
 class HomeController extends BaseController {
 public function showWelcome(){
 return View::make('hello');
 }
 }
  • 2行目:全てのコントローラーはBaseControllerクラスを拡張する必要があります。BaseControllerをのぞいてみましょう。下記のように、BaseControllerは、フレームワークのControllerクラスを継承しています。
    <?php
     class BaseController extends Controller {
     protected function setupLayout(){
     if ( ! is_null($this->layout)){
     $this->layout = View::make($this->layout);
     }
     }
     }
  • BaseControllerは、デフォルトで、app/controllersフォルダに中にあり、全てのコントローラの元になりますので、この中に共通のコントローラロジックを記述することが出来ます。

このコントローラを呼び出すには、コントローラアクションに対してルートを定義する方法、RESTフルコントローラとして登録する方法、リソースフルコントローラとして登録する方法があります。

その中から、まず基本的なコントローラーの呼び出し方法として、コントローラーアクションに対してルーティングする方法を下記に記述します。※app/routes.phpに下記のように記述します。

Route::get('home','HomeController@showWelcome');

上記例では、ブラウザから、http://localhost/home にアクセスすると、views/hello.php ファイル(Laravelインストール時のトップページ:Laravelのロゴ)が表示されます。

コントローラールートに名前を付ける

コントローラールートに対して、使用するコントローラーアクションを’uses’ で指定して’,’as’ で、名前を付けることが出来ます。

(例)
Route::get(‘foo’,[‘uses’=>’HomeController@showWelcome’,’as’=>’welcom’));
上記のコントローラアクションは、Redirect::action(‘welcome’)で呼び出すことが出来ます。

試しに、UserControllerに下記のアクションを追加してみます。

public function getDemo(){
 return Redirect::action('welcome');
 }

http://localhost/user/demo とブラウザに入力すると、デフォルトのトップページが表示されます。※ブラウザがhttp://localhost/fooに書き換わります。

コントローラアクションに対するURL

コントローラアクションに対するURLの生成は、URL::actionメソッドか、actionヘルパーメソッドを使用します。

HomeControllerのshowWelcomeアクションを下記のように書き換えてみます。

public function showWelcome(){
 return URL::action('welcome');
 }

http://localhost/foo とブラウザに入力すると、http://localhost/fooと表示します。尚、下記のいずれも上記と同じURLを表示します。

  • return URL::action(‘HomeController@showWelcome’);
  • return action(‘HomeController@showWelcome’);
  • return action(‘welcome’);

実行中のコントローラアクション名の取得

現在実行中のコントローラーアクションの名前を取得するには、currentRouteActionメソッドを使用します。

HomeControllerのshowWelcomeアクションを下記のように書き換えてみます。

public function showWelcome(){
 return Route::currentRouteAction();
 }

http://localhost/foo とブラウザに入力すると、HomeController@showWelcome と表示します。

« »

コメントを残す

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