10分ぐらいで学べるSymfony2 〜基本構造編〜
前回は環境を作りましたので今回は簡単にバンドルの作成と
それに付随する構造のメモです。
基本的にはSymfony Bookに書いてある内容だったりします。
基本ディレクトリ構造
Symfonyのプロジェクトルート以下の構造 web/ # ドキュメントルート src/ # プロジェクトのPHPコード vendor/ # ベンダーライブラリ app/ app/logs/ # アプリケーションログ app/cache/ # キャッシュ app/config/ # プロジェクトの設定 app/Resources/views # ベーステンプレート
バンドルの作成コマンド
php app/console generate:bundle --namespace=Test/HelloBundle --format=yml
作成コマンドで修正/追加されるファイル
# バンドルのルーティング設定追記(親) app/config/routing.yml # リストに「HelloBundle」バンドルを登録 app/AppKernel.php # バンドルソース src/Test/HelloBundle src/Test/HelloBundle/Controller/ # バンドルのコントローラ src/Test/HelloBundle/Resources/views # viewテンプレート src/Test/HelloBundle/Resources/config/ # バンドルの設定 src/Test/HelloBundle/Tests # testのソース
基本的なアクセスのフロー
下のようなアクセスがあった場合
http://XXXXX.ap-northeast-1.compute.amazonaws.com/app_dev.php/hello/hoge
(1)ルーティング処理が行われる。
# ルーティングファイル src/Test/HelloBundle/Resources/config/routing.yml # 「/hello/hoge」へのアクセスなのでマッチして、 # TestHelloBundleバンドルのDefaultコントローラのindexアクションへ処理を渡す TestHelloBundle_homepage: pattern: /hello/{name} defaults: { _controller: TestHelloBundle:Default:index }
(2)コントローラ処理
# TestHelloBundleバンドルのDefaultコントローラのindexアクション src/Test/HelloBundle/Controller/DefaultController.php # $nameにパラメータが渡る # TestHelloBundleバンドルのDefaultコントローラの「index.html.twig」を読み混む # 書式:BundleName:ControllerName:TemplateName class DefaultController extends Controller { public function indexAction($name) { return $this->render('TestHelloBundle:Default:index.html.twig', array('name' => $name)); } }
(3)レンダリング
# テンプレートファイル # ファイルの規則:/path/to/BundleName/Resources/views/ControllerName/TemplateName src/Test/HelloBundle/Resources/views/Default/index.html.twig # renderの配列パラメータが変数として渡る Hello {{ name }}!?
とりあえず、静的なページは作れそうな気がしてきました。
次回はDoctrineでデータベース関係のメモ予定