version : BETA3 (正式リリース後, 改変の可能性あり)
今回は Controller について。
ここらへんからは, ドキュメントを読むよりもソースを実際に書いてやっていくほうが勉強になるだろうってことで、要所要所しか説明しない予定です(めんどうだし。。笑)
routing と コントローラー引数
ドキュメントと同じルーティング情報で説明する。
hello:
pattern: /hello/{first_name}/{last_name}
defaults: { _controller: AcmeHelloBundle:Hello:index, color: green }
というrouting 設定だとする。この場合, HelloControllerのindexActionが呼ばれるということは, もう明らかである。pattern: /hello/{first_name}/{last_name}
defaults: { _controller: AcmeHelloBundle:Hello:index, color: green }
そして, first_nameとlast_nameが引数に与えられることもわかる。この引数についてちょっと詳しく見てみる。
- color:green の記述のために, $color 引数も与えられる。
function ($first_name, $last_name, $color)
- 引数の順番は関係ない!
function ($first_name, $last_name, $color) でも, function ($last_name, $color, $first_name) でも同じこと
逆に言えば, /hello/{first_name}/{last_name} とルーティングで設定したら, 変数は $first_name と $last_name になるってこと。
- function ($first_name, $last_name, $color, $foo) のように, ドコにも定義していない $foo はダメ!
ただ, デフォルト引数にして、function ($first_name, $last_name, $color, $foo = "foo") のようにすればOK
- function ($first_name, $color) のように, 変数が無い($last_name)場合でも問題ない
コントローラーの一般タスク
Redirecting | URLのリダイレクト
|
Forwarding | 処理を他のコントローラーにデリゲートする
※ これは httpKernel サービスの forward のショートカット |
Rendering Templates | テンプレートのレンダリング
これを簡単にかくと
|
Accessing other Services | 他のサービスを利用
|
requestサービス
requestサービスを使うと, セッションを扱ったり POST, GETの値を取得したりできる。
- $request = $this->get('request'); // サービス取得
- $session = $request->getSession(); // セッションオブジェクトの取得
- // ちなみに, セッションオブジェクトの取得は, $session = $this->get('session'); でもよさげ。
- $session->set('key','value'); // セッションに保存
- $session->get('key'); // セッションから値取得
- $request->isXmlHttpRequest(); // Ajaxリクエストかどうか
- $request->query->get('page'); // GETパラメータの取得
- $request->request->get('page'); // POSTパラメータの取得
まぁ、こんな感じでSymfonyの基礎の基礎を学びました。あとは実際に作成しながら、要所要所書いていく形にします。
0 コメント:
コメントを投稿