Weitere ähnliche Inhalte
Ähnlich wie 第4回Symfony2勉強会 基礎編ワークショップ.1 (20)
第4回Symfony2勉強会 基礎編ワークショップ.1
- 3. ワークショップの参考URL Creating Pages in Symfony2 (バンドル作成方法) http://symfony.com/doc/current/book/page_creation.html Creating and using Templates (Sf2とTwigの連携) http://symfony.com/doc/current/book/templating.html Twig Documentation (Twigの基本構文とか) http://www.twig-project.org/documentation Twigと他のテンプレートエンジンの比較 http://fabien.potencier.org/article/34/templating-engines-in-php http://fabien.potencier.org/article/35/templating-engines-in-php-follow-up 2011.06.04 Symfony2勉強会#4 基礎編ワークショップ 3
- 7. バンドルの作成と登録 バンドル フレームワーク 自分のプログラム 外部プラグイン バンドルの粒度 symfony 1.x と比較 frontend application … FrontendBundle blog module … BlogBundle sfWebBrowserPlugin … WebbrowserBundle 2011.06.04 Symfony2勉強会#4 基礎編ワークショップ 7
- 14. Twig構文を試す – for文 src/My/WorkshopBundle/Resources/views/Default/index.html.twig 2011.06.04 Symfony2勉強会#4 基礎編ワークショップ 14 <ul> {% for key, user in users %} <li>No.{{ key }}: {{ user.name}} </li> {% endfor%} </ul>
- 15. Twig構文を試す – for文 DefaultController::indexAction() 2011.06.04 Symfony2勉強会#4 基礎編ワークショップ 15 public function indexAction() { $users = array( ‘1’ => array(‘name’=>‘鹿目まどか', 'age'=>14), ‘5’ => array(‘name’=>‘<b>めんま</b>', 'age'=>’?'), ); return $this->render('MyWorkshopBundle:Default:index.html.twig', array('users' => $users)); }
- 16. Twig構文を試す {{ ... }} 値や式の結果をテンプレートに出力するための文法 {% ... %} テンプレート内でロジックを制御するための文法 {# ... #} コメントを表すための文法 複数行にわたって使用可能 2011.06.04 Symfony2勉強会#4 基礎編ワークショップ 16
- 17. Twig構文を試す - include src/My/WorkshopBundle/Resources/views/menu.html.twig src/My/WorkshopBundle/Resources/views/Default/index.html.twig (の冒頭に追加) 2011.06.04 Symfony2勉強会#4 基礎編ワークショップ 17 <ul> <li>メニュー1</li> <li>メニュー2</li> <li>メニュー3</li> </ul> {% include 'MyWorkshopBundle::menu.html.twig'%}
- 18. Twig構文を試す - raw src/My/WorkshopBundle/Resources/views/Default/index.html.twig にrawフィルタを付ける エスケープされなくなる 2011.06.04 Symfony2勉強会#4 基礎編ワークショップ 18 <li>No.{{ key }}: {{ user.name}}({{ user.age }})</li> <li>No.{{ key }}: {{ user.name|raw}}({{ user.age }})</li>
- 19. Twig構文を試す - format src/My/WorkshopBundle/Resources/views/Default/index.html.twig をformatフィルタで書き直すと printf()関数の様なもの 2011.06.04 Symfony2勉強会#4 基礎編ワークショップ 19 <li>No.{{ key }}: {{ user.name}}({{ user.age }})</li> <li>{{ "No.%d: %s(%s)"|format(key, user.name, user.age) }}</li>
- 20. Twig構文を試す – その他 例だけ紹介 date … DateTime::format()のラッパー(書式はdate()) default … 空要素の初期値を指定(beta3バグあり) 「空」と判定される値は、falseまたは0以外のempty()値 if/elseif/else/endif … 条件分岐 http://www.twig-project.org/doc/templates.html 2011.06.04 Symfony2勉強会#4 基礎編ワークショップ 20 {{ “now”|date(‘Y-m-dH:i:s’) }} {{ user.createdAt|date(‘Y/m/d’) }} {{ user.birthday|default(‘----/--/--’) }} {% if users %} … {% endif%}
- 23. Twigテンプレートの継承 2011.06.04 Symfony2勉強会#4 基礎編ワークショップ 23 base.html.twig layout.html.twig <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>{%block title %}Welcome!{%endblock%}</title> {%block stylesheets%}{% endblock%} <link rel="shortcut icon" href="{{asset('favicon.ico')}}" /> </head> <body> {%block body %}{%endblock%} {% block javascripts%}{% endblock%} </body> </html> titleブロック index.html.twig {% extends '::base.html.twig' %} {% block title %}WorkShop{% endblock%} {% block body %} {% include 'MyWorkshopBundle::menu.html.twig' %} {% endblock%} 継承 継承 titleブロック {% extends 'MyWorkshopBundle::layout.html.twig' %} {% block body %} {{ parent() }} <!– ここから--> 中身 <!– ここまで {% endblock%} 親のblock呼び出し bodyブロック bodyブロック bodyブロック
- 24. Twigテンプレートの継承 2011.06.04 Symfony2勉強会#4 基礎編ワークショップ 24 base.html.twig <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>{%block title %}Welcome!{%endblock%}</title> {%block stylesheets%}{% endblock%} <link rel="shortcut icon" href="{{asset('favicon.ico')}}" /> </head> <body> {%block body %}{%endblock%} {% block javascripts%}{% endblock%} </body> </html>
- 25. Twigテンプレートの継承 2011.06.04 Symfony2勉強会#4 基礎編ワークショップ 25 layout.html.twig {% extends '::base.html.twig' %} {% block title %}WorkShop{% endblock%} {% block body %} {% include 'MyWorkshopBundle::menu.html.twig' %} {% endblock%}
- 26. Twigテンプレートの継承 2011.06.04 Symfony2勉強会#4 基礎編ワークショップ 26 index.html.twig {% extends 'MyWorkshopBundle::layout.html.twig' %} {% block body %} {{ parent() }} <!– ここから--> 中身 <!– ここまで {% endblock%}
- 29. \(^o^)/おわり\(^o^)/ Next step… ブログチュートリアル http://doc.symfony.gr.jp/blog-tutorial/ Symfony2 Book http://symfony.com/doc/current/book/index.html 2011.06.04 Symfony2勉強会#4 基礎編ワークショップ 29