今日は、Symfony2についてです。
まずは、これまでと同じ仕様のサンプルを作成しました。
「同じ仕様って、どんな仕様なんじゃい?」
と言う方は、こちらの記事をどうぞ。最初のほうに書いてあります。
内容的にですが、Symfony2もblogチュートリアルがあるので、そちらを参考に一部手を加えました。
ページャ追加したり、formをせっかくだからクラスで作ってみたり、ですね。
そのソースが、こち…ら…。
すんませんまた上げ忘れて手元にありません何やって(ry
後日上げなおします。
■大体の流れ
前回と同様、Symfony2を読むための流れです。
- app/config/routing.ymlから、利用するバンドルを調べる
今回のサンプルの場合、以下のような形になっています。
sample: resource: "@MySampleBundle/Resources/config/routing.yml" prefix: /sample
resourceが挿す先は、バンドルのrouting設定ファイルです。 - バンドルのrouting.ymlを見て、コントローラと対応するメソッドを調べる。
バンドル自体はsrcディレクトリの先にあります。
今回の場合、パスは以下になります。
src/My/SampleBundle/Resources/config/routing.yml
patternにURIのパターンと、そのパターンでリクエストが来た場合に呼び出される内容がdefaultsに記載されています。
sample_index: pattern: / defaults: { _controller: MySampleBundle:Default:index }
この場合、MySampleBundleのDefaultControllerのindexAction()が呼ばれる事になります。
{}で囲まれたものがある場合、それはアクションの引数になります。 - 対応するコントローラの処理を読む
この辺の内容は、基本的なPHPです。
MVCでいうMにあたる、DB操作についてはdoctrineを利用します。
"MySampleBundle:Data"の場合、接続先DBの"Data"テーブルを読むと言う事さえ判れば、なんとなく読めると思います。
ビューについては、$this->render()にて指定しています。
最初の引数がテンプレート、次の引数がテンプレートに引き渡す値の配列ですね。 - テンプレートを読む
テンプレートは[バンドルルート]/Resources/viewsにあります。
コントローラ上で
'MySampleBundle:Default:index.html.twig'
として呼び出されていた場合、テンプレートのパスは以下になります。
src/My/SampleBundle/Resources/views/Default/index.html.twig
Symfonyの場合、テンプレートはTwigと言う物を使っています。
書式的に難しい物では無いので、見れば大体は判ると思います。
Twigは継承タイプのテンプレートなので、{% extends %}により他のテンプレートを継承している場合、まずそちらの内容が読み込まれます。
■実装しての感想
- JavaのStruts/SpringFrameworkの組み合わせを思い出した。
書式自体はぜんぜん違うけど、この、設定ファイルありきの書き方は、本当にソレっぽいなと思います。
設定ファイルの書式自体は簡単なので、Springほど設定ファイルがゴミゴミすることもありませんが…。 - 癖が強い。
慣れの問題もあるかとは思うのですが、中々に癖が強いように感じられました。
doctrineやTwig等、他のFW利用時にはあまり使わないものが多くあるからかもしれません。 - Pagerにあたる機能はコアに無い。
らしいです。
今回は、本当に簡単なページャだったので、直接一覧ページのコードに埋め込む形で実装してしまいました。
実際にサイトを実装する場合は、使い回しが出来るよう、独自バンドルを作ったりするんじゃないかと思います。
今日はここまで。
次回はCodeIgniterで実装してみようと思います。
このコメントは投稿者によって削除されました。
返信削除