[ ZendFramework1] コントローラとアクションの追加(zf create controller/action)

Pocket

以下のリンクでは zf コマンドを使用して、プロジェクトのひな型の作成を紹介しましたが、ここでは、さらにコントローラーとアクションを追加する方法を掲載しています。

[ ZendFramework1 ] プロジェクトの作成 (zf create project)

スポンサーリンク

コントローラの追加

プロジェクト同様、コントローラも 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
    }

 

スポンサーリンク


Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>