アクションコントローラとビューの関係
URLとファイル
アクションからテンプレートへの値の渡し方
URLパラメータの受け渡し
GETリクエスト・POSTリクエストの使用
まず基本的な構成は次の図のようになっています。
URLとファイル
ブラウザからアクセスするときには次のようになります。
http://127.0.0.1/[コントローラ名]/[アクション名] または http://127.0.0.1/[コントローラ名]/[アクション名]/
ここでコントローラ名およびアクション名を省略すると、デフォルトコントローラ(index)、デフォルトアクション(index)が選択されます。
コントローラを省略して、アクションを指定することはできません。
アクセスされるファイルは下記のようになります。
─ application ├ controllers │├ IndexController.php │├ ErrorController.php │└ [コントローラ名(先頭1文字は大文字)]Controller.php └ views └ scripts ├ [コントローラ名] │├ index.phtml │└ [アクション名].phtml ├ error │└ error.phtml └ index ├ index.phtml └ [アクション名].phtml
controllersは機能、viewsは表示するテンプレートが置かれます。
アクションはController.phpの中の1つのメソッドとして記述されます。
これ以外にGETリクエストを使用せず、URLにパラメータを含めることもできます。
URLパラメータの受け渡し
アクションからテンプレートへの値の渡し方
アクションコントローラからテンプレート(ビュー)に値を渡すには、$this->viewを使用します。 アクション側で
$this->view->変数名 = 値;
のように指定すると、ビュー側では
$this->変数名
として値を受け取れます。
例
アクション [コントローラ名(先頭1文字は大文字)]Controller.php
<?php class [コントローラ名(先頭1文字は大文字)]Controller extends Zend_Controller_Action { public function [アクション名]Action() { $this->view->hoge = 'テスト'; } }
テンプレート(ビュー) [アクション名].phtml
<html> <head> <title>TEST</title> </head> <body> <?php print($this->hoge); ?> </body> </html>
クロスサイドスクリプティング(CSS、XSS)対策のため 受け渡しする値をHTMLエスケープ(サニタイジング)を行うには、テンプレート側でZend_viewのescapeメソッドを使用します。
$this->escape($this->hoge)
URLパラメータの受け渡し
GETリクエストを使わず、URLにパラメータを含めることができます。
http://127.0.0.1/[コントローラ名]/[アクション名]/[パラメータ名1]/[パラメータ値1]/[パラメータ名2]/[パラメータ値2]/…
例
http://127.0.0.1/foo/boo/id/123/hoge/987
アクション内でgetRequest()を使用して、この値を受け取ることができます。
アクション内で使用するには、次のようにします。
$this->getRequest()->id
またビュー内でパラメータ名を指定して使用するには、アクションからビューにgetRequest()のまま渡し、ビュー内でパラメータ名を指定できます。
アクション内で次のようにすると
$this->view->params = $this->getRequest();
ビュー内では、次のようにして値を使用できます
$this->params->id
GETリクエスト・POSTリクエストの使用
アクション内でGETリクエストを受け取るには、次のようにします。
$this->getRequest()->getQuery('変数名')
アクション内でPOSTリクエストを受け取るには、次のようにします。
$this->getRequest()->getPost('変数名')
スーパーグローバル変数の$_REQUESTに相当するメソッドはgetParam()になりますが、$_REQUESTと違いcookieの値は含まれません。
また優先順位は、『URLパラメータ』>『GETパラメータ』>『POSTパラメータ』になります。
$this->getRequest()->getParam('変数名')
関連記事
- Composerコマンドでウクライナへのメッセージが表示されたことがあります
- Live Commerceとは
- CakePHP、Symfony、Zend Frameworkの比較
- Zend_Authでは重複するID・パスワードに注意
- リダイレクトとフォワード
- クエリデバッグする方法
- 'Zend_Db_Statement_Exception' with message 'SQLSTATE[HY000]: General error' とは
- Zend_DBのSELECTメソッドのまとめ
- Zend_DBの基本
- Zend_Authによる認証 (ログインページを作る)
- Zend Frameworkのデータベース接続
- Smartyを利用する方法
- ビューヘルパー
- 環境を分ける方法
- ビュー(テンプレート)の基本
- アクションコントローラの基本
- コマンドで雛形を作る CLIツール
- 推奨ディレクトリ構成
- 環境設定とインストール
- 最小版のファイル一覧
- ファイル一覧
- 基本的な特徴
スポンサーリンク