Zend Framework - アクションコントローラ記述例

HOME | TOP

■ アクションコントローラのシンプル例


アクションコントローラを作成するには、Zend_Controller_Actionクラスを継承したサブクラスを作成することになります。

リクエストに基づいて決定された「コントローラ名」と「アクション名」があり、
その「コントローラ名」で呼び出すアクションコントローラファイルが決まり、
「アクション名」でそのコントローラの中のどのアクションメソッドをコールするかが決まります。

つまり、アクションコントローラ内には呼ばれる可能性のあるアクションメソッドを最低でも1つは用意していないと意味がないことになります。

http://サーバ名/foo/bar がリクエストされた場合(コントローラ名が"foo"、アクション名が"bar")を例に記述すると、最低限の記述は以下のようになります。

アクションコントローラ例 [application/controllers/FooController.php]

作成したアクションコントローラのファイルが正しく呼び出されて、正しくクラスがオブジェクト化されて、正しく目的のアクションメソッドがコールされるための命名規則は以下のとおりになります。

項目記述命名規則
コントローラ名fooリクエストにコントローラ名に該当する部分が無ければデフォルトの"index"に
アクション名barリクエストにアクション名に該当する部分が無ければデフォルトの"index"に
ファイル名FooController.php先頭大文字コントローラ名 + Controller.php
クラス名FooController先頭大文字コントローラ名 + Controller
アクションメソッド名barAction先頭小文字アクション名 + Action


上記のように、リクエストに「コントローラ名」や「アクション名」に該当する部分が無ければデフォルトのIndexController.phpファイルに記述したIndexControllerクラスのindexActionメソッドがコールされることになります。

このデフォルトはフロントコントローラのメソッドsetDefaultControllerName('foo')およびsetDefaultAction('bar')で再設定することができるようになっています。


■ アクションコントローラに追加できる記述


コントローラ名およびアクション名に基づいて呼ばれるアクションメソッドの前後のタイミングで実行させたいコードを記述するためのメソッドが用意されています。

アクションコントローラ例 [application/controllers/FooController.php]

特定のタイミングで呼ばれるメソッドを定義(記述)することができます。

なければ呼ばれないだけなので、必要なものだけを定義しておくといいでしょう。


■ アクションコントローラに追加できる記述(その2)


エラー発生時に呼ばれるメソッドを記述することができます。

アクションコントローラ例 [application/controllers/FooController.php]

ではアクションコントローラ内に__call()を記述していなかった場合のエラーはどうなるかというと、コントローラ名"error"、アクション名"error"のエラーコントローラを呼び出そうとします。

エラーコントローラ例 [application/controllers/ErrorController.php]

見てのとおり単なるコントローラ名"error"、アクション名"error"のアクションコントローラです。
なので、エラーコントローラ用のビュースクリプトを用意する必要があります。

[application/views/scripts/error/error.phtml]


2010(C)Mingw