Twigのタグ学習(中国語)パート3完了_PHPチュートリアル

WBOY
リリース: 2016-07-13 17:48:05
オリジナル
1186 人が閲覧しました

use标签
use标签是1.1版本新添加内容。
这个use标签主要是来解决模板只能从一个父模板继承,而你又想重用其他模板的问题。但是use标签只会导入block区块,
(注意import只会导入宏macros,include会导入一切。这三个标签要区分清楚)
比如 {% extends "base.html" %} 
 
{% use "blocks.html" %} 
 
{% block title %}{% endblock %} 
{% block content %}{% endblock %} 
{% extends "base.html" %}

{% use "blocks.html" %}

{% block title %}{% endblock %}
{% block content %}{% endblock %}而blocks.html的内容是
# blocks.html 
{% block sidebar %}{% endblock %} 
# blocks.html
{% block sidebar %}{% endblock %}我们从blocks..html导入了 block sidebar
运行的结果几乎等于
{% extends "base.html" %} 
 
{% block sidebar %}{% endblock %} 
{% block title %}{% endblock %} 
{% block content %}{% endblock %} 
{% extends "base.html" %}

{% block sidebar %}{% endblock %}
{% block title %}{% endblock %}
{% block content %}{% endblock %}
要注意,被use标签导入的模板(上例中的block.html),不能再继承别的模板,不能定义宏macros。但它可以再use其他模板。
另外use标签后面的文件名,不能是一个表达式。


当被导入了的block和主模板的block重名了,模板引擎会自动忽略被use标签导入block。
为了避免这种情况。你可以在使用use标签的时候,给block重命名
{% extends "base.html" %} 
 
{% use "blocks.html" with sidebar as base_sidebar %} 
 
{% block sidebar %}{% endblock %} 
{% block title %}{% endblock %} 
{% block content %}{% endblock %} 
{% extends "base.html" %}

{% use "blocks.html" with sidebar as base_sidebar %}

{% block sidebar %}{% endblock %}
{% block title %}{% endblock %}
{% block content %}{% endblock %}
1.3版本新支持了 parent()函数,(这个特别重要)
parent()函数,会自动的搞定block的继承树,如果你在主模板里覆盖了use标签引入进来的block块,而用parent()函数则可以调用被覆盖的那个block内容
{% extends "base.html" %} 
 
{% use "blocks.html" %} 
 
{% block sidebar %} 
    {{ parent() }} 
{% endblock %} 
 
{% block title %}{% endblock %} 
{% block content %}{% endblock %} 
{% extends "base.html" %}

{% use "blocks.html" %}

{% block sidebar %}
    {{ parent() }}
{% endblock %}

{% block title %}{% endblock %}
{% block content %}{% endblock %}
注意,parent()的内容 其实是blocks.html里的block sidebar的内容。因为继承树是  base.html->blocks.html->本模板


如果你在use标签里给导入的block重命名了,那就可以使用block函数,来代替上面代码中的parent函数所达到的效果
{% extends "base.html" %} 
 
{% use "blocks.html" with sidebar as parent_sidebar %} 
 
{% block sidebar %} 
    {{ block('parent_sidebar') }} 
{% endblock %} 
{% extends "base.html" %}

{% use "blocks.html" with sidebar as parent_sidebar %}

{% block sidebar %}
    {{ block('parent_sidebar') }}
{% endblock %}
你可以使用任意数量的use标签,如果多个use标签里的block名字存在重复,那么最后use的那个有效。
spacelsee标签
会删除html标签之间的空白
{% spaceless %} 
   

 
        foo 
   
 
{% endspaceless %} 
 
{# output will be
foo
#} 
{% spaceless %}
   

        foo
   

{% endspaceless %}

{# output will be

foo
#}
自動エスケープタグ
とても恥ずかしいので理解できませんでした。私はそれが文字通り自動エスケープを意味することを知っています。 。しかし。 。実験中はまだ使い方が分かりませんでした
彼が公式に挙げた例は
{% 自動エスケープ true %}
このブロックではすべてが自動的にエスケープされます
{% 終了自動エスケープ %}

{% 自動エスケープ false %}
このブロックではすべてがそのまま出力されます
{% 終了自動エスケープ %}

{% autoescape true js %}
このブロックではすべてが自動的にエスケープされます
js エスケープ戦略を使用する
{% 終了自動エスケープ %}
{% 自動エスケープ true %}
このブロックではすべてが自動的にエスケープされます
{% endautoescape %}

{% 自動エスケープ false %}
このブロックでは全てそのまま出力されます
{% endautoescape %}

{% autoescape true js %}
このブロックではすべてが自動的にエスケープされます
js エスケープ戦略を使用する
{% endautoescape %}
そして私はこの方法でそれをテストしました。出力は元のコンテンツのままです。
{% 自動エスケープ true %}
ああああ {% 終了自動エスケープ %}

{% 自動エスケープ false %}
ああああ {% 終了自動エスケープ %}

{% autoescape true js %}
<スクリプト> 関数 aaa(){alert('x');}
{% 終了自動エスケープ %}
{% 自動エスケープ true %}
ああああ
{% endautoescape %}

{% 自動エスケープ false %}
ああああ
{% endautoescape %}

{% autoescape true js %}
<スクリプト>
関数 aaa(){alert('x');}

{% endautoescape %}
通りかかった先輩諸兄の皆さんに聞いていただきたいと思います。 。 。
彼の公式ドキュメントには、{% autoescape true %} が使用されている場合、生のフィルターを使用しない限り、内部のコンテンツは安全なコンテンツにエスケープされると記載されています。
{% 自動エスケープ true %}
{{ 安全な値|生 }}
{% 終了自動エスケープ %}
{% 自動エスケープ true %}
{{ 安全な値|生 }}
{% endautoescape %}
また、親マクロなど、twig内の関数の戻り値も安全です


生タグ
raw タグにより、ブロック内のデータがテンプレート エンジンによって解析されなくなります。 {% 生 %}

    {% シーケンス内の項目の %}
                                                                                                       {% 終了の %}

{% エンドドロー %}
{% 生 %}

    {% シーケンス内の項目の %}
                                                                                                        {% 終了用 %}

{% エンドロウ %}
フラッシュタグ
バージョン 1.5 の新しいコンテンツ
内部的には、テンプレートに出力キャッシュを更新するよう指示し、実際には PHP のフラッシュ関数を呼び出します
。 {% フラッシュ %}
{% フラッシュ %}

タグ付け
バージョン 1.5 の新しいコンテンツ
do タグは出力タグ {{ }} と同じように機能しますが、いくつかの式を計算できますが、違いは何も出力しないことです
。 {% は 1 + 2 % を実行します}
{% は 1 + 2 % を実行します}

これでラベルの勉強は終わりです。拍手に励まされました。 。 。 。 。次にフィルターの学習に入ります。 。 。 。 。 。ギシギシギシギシ

jiaochangyunさんのコラムより抜粋


http://www.bkjia.com/PHPjc/478459.html

www.bkjia.com

本当

http://www.bkjia.com/PHPjc/478459.html技術記事 use タグ use タグはバージョン 1.1 で新たに追加されました。 この use タグは主に、テンプレートが 1 つの親テンプレートからしか継承できず、他のテンプレートを再利用したいという問題を解決するために使用されます。ただし、使用タグのみ...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート