ラベル twig の投稿を表示しています。 すべての投稿を表示
ラベル twig の投稿を表示しています。 すべての投稿を表示

2012年5月2日水曜日

Formのwidget個々のカスタマイズ

Formのwidgetには、choice, time, number ..... のように、いくつか用意されています。 詳しくは コチラ (symfony日本語ドキュメント) で, templateで出力する際は
{{ form_widget(form.fieldname) }} 
みたいにやります。 そうすると、
みたいな感じで表示されます。 ですが、
みたく、縦並びにしたいとかって、レイアウトをwidgetごとに変更したいときってありますよね。 そんなときは、
{% form_theme form _self %}
{% block _[formtype名]_[フィールド名]_widget %}
{% spaceless %}
    <div {{ block('widget_container_attributes') }}>
    {% for child in form %}
     <div> {# 追加!!!!!! #}
            {{ form_widget(child) }}
            {{ form_label(child) }}
     </div> {# 追加!!!!!! #}
    {% endfor %}
    </div>
{% endspaceless %}
{% endblock _recallItem_is_new_widget %}
みたいな感じで、テンプレートをカスタマイズできます。 これは、テンプレートのデフォルトのテーマをカスタマイズって形をとっていて、その元となるテンプレートは vendor/symfony/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig にありますので、これを見ながらカスタマイズすればOK.

2011年10月14日金曜日

Twigに関するメモ

Twigに関して、少しメモを。

  • テンプレートの継承が可能 (blocklタグ)
  • {{ ... }}: 変数や式の結果を出力, {{ ... }} で出力されるものは、デフォルトでエスケープしてくれる
  • {% ... %}: for ループや if 文等の、テンプレートのロジックを制御するタグ
  • {# ... #} コメントを記述できる
  • {{ path('_demo_hello' }} のようにして、routing configrationに基づいてパスを記述できる
  • url 関数は絶対 URL を生成
  • 画像やcssなどを読み込む際は、{{ asset('css/blog.css') }} などとすることで、アセットを簡単に扱える

2011年10月13日木曜日

Viewの作成方法

ビューについて少し。

まず、全体のレイアウトは、app/Resources/views/ の中に layout.html.twig で、
ページ毎に異なる部分は、mogeBundle/Resources/views/の中で hello.html.twig で記述。


Twig には、テンプレートの継承機能があり、

layout.html.twigで以下のように書いたとし、
<!-- layout.html.twig -->
{% block title %}Layout{% endblock %}

継承先のhello.html.twigで、
<!-- hello.html.twig -->
{% block title %}Hello{% endblock %}

とすることで、titleブロックのオーバーライドが可能。

ちなみに、デフォルトで存在するレイアウトファイルの中身は以下のようになってる。

<!-- 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>

つまり、これを継承して、title, body, javascripts 等のブロックをオーバーライドすれば、OKっぽい。
おもしろい〜。

ちなみに、Twig は、デフォルトですべての出力をエスケープしてくれるらしいです。

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More