以下のリンクでは zf コマンドを使用して、プロジェクトのひな型の作成を紹介しましたが、ここでは、さらにコントローラーとアクションを追加する方法を掲載しています。
スポンサーリンク
コントローラの追加
プロジェクト同様、コントローラも zf コマンドで作成することができます。
D:\sample_project>D:\zf-1.11.3\bin\zf create controller sample Note: The canonical controller name that is used with other providers is "Sample"; not "sample" as supplied Creating a controller at D:\sample_project/application/controllers/SampleController.php Creating an index action method in controller Sample Creating a view script for the index action method at D:\sample_project/application/views/scripts/sample/index.phtml Creating a controller test file at D:\sample_project/tests/application/controllers/SampleControllerTest.php Updating project profile 'D:\sample_project/.zfproject.xml'
- コマンドで “sample” と小文字でコントローラを作成しようとしていますが、最初は大文字に変換して “Sample” という名前で コントローラを作成したと出力されています。最初は大文字であると言うルールのためです。
- Windows ではディレクトリやファイル名の大文字・小文字は区別されませんが、Unix 系 OS と動作をあわせるために厳格な規則があるのかもしれません。
作成された application/controllers/SampleController.php を確認すると indexAction メソッドが存在することがわかります。つまり、
コントローラ = クラス
アクション = メソッド
の関係になっています。
また、コントローラ内には init メソッドも同様に作成されていることがわかります。これは、コントローラ内のアクション(メソッドに対応) にアクセスされる前に必ず呼び出されるメソッドとなります。
デフォルトで作成された Sample コントローラの index アクション(indexAction メソッド)にアクセスするには、 以下の URL で呼び出すことができ、ブラウザには、application/views/scripts/sample/index.phtml の内容が表示されます。
URL:http://localhost/sample/index
アクションを追加する
次に Sample コントローラに Test アクションを追加してみます。これも同様に zf コマンドで作成します。
D:\sample_project>D:\zf-1.11.3\bin\zf create action test Sample Creating an action named test inside controller at D:\sample_project/application/controllers/SampleController.php Updating project profile 'D:\sample_project/.zfproject.xml' Creating a view script for the test action method at D:\sample_project/application/views/scripts/sample/test.phtml Updating project profile \'D:\sample_project/.zfproject.xml'
test アクションが Sample コントローラに作成され、対応する test.phtml も作成されます。
アクションメソッド内で URL で与えらたパラメータを取得する
GET メソッドによる方法と Zend Framework 風の2種類のパラメータの取得方法を以下に示します。
GET メソッドによるパラメータの受信
Zend Framework でも通常 PHP で使用している $_GET 変数で取得することはできます。 URI に(コントローラ名)/(アクション名)に続いて GET パラメータを与えます。
URI:http://localhost/sample/test?key1=data1
// ファイル:application/controllers/SampleController.php // TEST アクション public function testAction() { // action body // Array 変数で取得する echo htmlspecialchars($_GET["key1"]); // framework の リクエストオブジェクトから取得する場合 $req = $this->getRequest("key1"); echo $req->getParam("key1"); }
Zend Framework 風に URL にパラメータを付与する方法
Zend Framework ではデフォルトルートとして以下ように、アクションに続く URI をキーと値の連続と解釈します。
URI:http://localhost/sample/test/key1/data1/key2/data2/key3/data3
// ファイル:application/controllers/SampleController.php // TEST アクション public function testAction() { // action body echo "key1 = " . $this->_request->getParam('key1'); echo "key2 = " . $this->_request->getParam('key2'); echo "key3 = " . $this->_request->getParam('key3'); // key1 = data1 // key2 = data2 // key3 = data3 }