ホームページ >バックエンド開発 >PHPチュートリアル >TWIG テンプレート設計クイックスタートマニュアル Chinese_PHP チュートリアル

TWIG テンプレート設計クイックスタートマニュアル Chinese_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:48:001512ブラウズ

小枝についていくつかの記事を書きました。 。クイックスタートなどはまだ書いていません。今すぐ書いてください

まとめ
twig のテンプレートは通常のテキスト ファイルであり、特別な拡張子は必要ありません。html、.htm、または .twig を使用できます。
テンプレート内の変数と式は実行時に解析されて置換され、タグがテンプレートのロジックを制御します
以下は、いくつかの基本的なことを説明するための最小のテンプレートです


                                                                                                               

    {ナビゲーション内のアイテムの% %}
  • {{ item.caption }}
  • {% endfor %}
                                                                               
                                                                                              {{ a_variable }}


    <頭>
                                                                                     


      {ナビゲーション内の項目の% %}
    • {{ item.caption }}

    • {% endfor %}
                                                                                             

      私のウェブページ


      {{ a_variable }}


      2 種類の記号 {% ... %} と {{ ... }} が含まれています。1 つは for ループなどの制御に使用され、2 つは変数と式の出力に使用されます


      アイデアサポート
      多くの IDE は小枝の強調表示をサポートしています。皆さん、必要なものを見つけてください。
      Twig バンドル経由でテキストメイト
      Jinja 構文プラグイン経由の Vim

      Twig 構文プラグイン経由の Netbeans

      PhpStorm (2.1 時点でネイティブ)
      Twig プラグイン経由の Eclipse
      Twig バンドルを介した Sublime Text
      Twig 言語定義を介した GtkSourceView (gedit および他のプロジェクトで使用)
      Twig 構文モードによる Coda と SubEthaEdit

      変数

      プログラムはいくつかの変数をテンプレートに渡すので、それらをテンプレートに出力する必要があります。たとえば、$hello
      を出力します。
      {{ こんにちは }}
      {{ hello }} オブジェクトまたは配列がテンプレートに渡される場合、 dot を使用してオブジェクトのプロパティまたはメソッド、または配列のメンバーを出力できます。または、添え字を使用することもできます。
      {{ foo.bar }}
      {{ foo['bar'] }}
      {{ foo.bar }}
      {{ foo['bar'] }}
      アクセスした値が存在しない場合は、null が返されます。 TWIG には、値が存在するかどうかを確認するための完全なプロセスがあります。


      for.bar は次の操作を実行します
      。 。 。 foo が配列の場合、bar メンバーを返そうとします。存在しない場合は、以下に進みます。 。 。 。 foo がオブジェクトの場合、bar 属性を返そうとします。存在しない場合は、以下に進みます。 。 。 。 bar メソッドの実行を試みます。存在しない場合は、以下に進みます
      。 。 。 getBar メソッドの実行を試みます。存在しない場合は、以下に進みます
      。 。 。 isBar メソッドを実行しようとしますが、存在しない場合は null を返します


      for['bar'] ははるかに単純です。配列でなければなりません。bar メンバーを返そうとし、そうでない場合は null を返します
      グローバル変数
      TWIG はいくつかのグローバル変数を定義します

      _self これについてはマクロタグを参照してください

      _context 現在の環境です
      _charset: 現在の文字エンコーディング


      変数の代入
      詳細は設定タグをご覧ください

      {% set foo = 'foo' %}

      {% set foo = [1, 2] %}
      {% set foo = {'foo': 'bar'} %}
      {% set foo = 'foo' %}
      {% set foo = [1, 2] %}

      {% set foo = {'foo': 'bar'} %}


      过滤器 Firters
      变量可以被过滤器修饰。过滤器和变量用(|)分割开。过滤器也是可以有参数的。过滤器也可以被多重使用。
      下面这例子就使用了两个过滤器。

      {{ name|striptags|title }} 
      {{ name|striptags|title }}striptas表示去除html标签,title表示每个单词的首字母大写。更多过滤器参见我博客


      过滤器也可以用在代码块中,参见 filter标签

      {% filter upper %} 
        This text becomes uppercase 
      {% endfilter %} 
      {% filter upper %}
        This text becomes uppercase
      {% endfilter %}

      函数 Function
      这个没什么好说的,会写程序的都知道,TWIG内置了一些函数,参考我的博客
      举个例子 返回一个0到3的数组,就使用 range函数
      {% for i in range(0, 3) %} 
          {{ i }}, 
      {% endfor %} 
      {% for i in range(0, 3) %}
          {{ i }},
      {% endfor %}

      流程控制
      支持for循环 和 if/elseif/else结构。直接看例子吧,没什么好说的。

      Members

       
         
            {% for user in users %} 
               
      • {{ user.username|e }}
      •  
            {% endfor %} 
       

      Members



            {% for user in users %}
               
      • {{ user.username|e }}

      •     {% endfor %}

      {% if users|length > 0 %} 
         
         
                {% for user in users %} 
                   
      • {{ user.username|e }}
      •  
                {% endfor %} 
           
       
      {% endif %} 
      {% if users|length > 0 %}
         

                {% for user in users %}
                   
      • {{ user.username|e }}

      •         {% endfor %}
           

      {% endif %}


      注释
      {# ... #} 包围的内容会被注释掉,可以是单行 也可以是多行。


      载入其他模板
      详见include标签(我博客内已经翻译好哦),会返回经过渲染的内容到当前的模板里

      {% include 'sidebar.html' %} 
      {% include 'sidebar.html' %}当前模板的变量也会传递到 被include的模板里,在那里面可以直接访问你这个模板的变量。
      比如

      {% for box in boxes %} 
          {% include "render_box.html" %} 
      {% endfor %} 
      {% for box in boxes %}
          {% include "render_box.html" %}
      {% endfor %}在 render_box.html 是可以访问 box变量的
      加入其他参数可以使被载入的模板只访问部分变量,或者完全访问不到。参考手册


      模板继承
      TWIG中最有用到功能就是模板继承,他允许你建立一个“骨骼模板”,然后你用不同到block来覆盖父模板中任意到部分。而且使用起来非常到简单。
      我们先定义一个基本骨骼页base.html 他包含许多block块,这些都可以被子模板覆盖。

       
       
           
              {% block head %} 
                   
                  {% block title %}{% endblock %} - My Webpage 
              {% endblock %} 
           
           
             

      {% block content %}{% endblock %}
       
               
           
       


         
              {% block head %}
                 
                  {% block title %}{% endblock %} - My Webpage
              {% endblock %}
         
         
             
      {% block content %}{% endblock %}

             

      ブロックヘッド、ブロックタイトル、ブロックコンテンツ、ブロックフッターという4つのブロックを定義しました
      注意
      1. ブロックは入れ子にすることができます。
      2. ブロックはデフォルト値を設定できます(中央に囲まれた内容)。サブテンプレートでカバーされていない場合は、デフォルト値が直接表示されます。たとえば、ブロックフッターの場合、ほとんどのページを変更する必要はありません (労力の節約) ですが、必要なときに簡単に変更できます (柔軟性)
      サブテンプレートをどのように定義するかを見てみましょう。
      {% は "base.html" を拡張します %}

      {% ブロック タイトル %}インデックス{% エンドブロック %}
      {% ブロックヘッド %}
      {{ 親() }}