首頁 後端開發 php教程 Twig 的 tags学习(中文) 之三 完结_PHP教程

Twig 的 tags学习(中文) 之三 完结_PHP教程

Jul 13, 2016 pm 05:48 PM
twig use 中文 內容 學習 標籤 添加 版本 這個

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
#}
autoescape标签
这个十分汗颜,我居然没看懂。我只知道字面上的意思是自动转义。。但是。。我做实验的时候 还是不知道应怎么使用
他官方给的例子是
{% autoescape true %} 
    Everything will be automatically escaped in this block 
{% endautoescape %} 
 
{% autoescape false %} 
    Everything will be outputed as is in this block 
{% endautoescape %} 
 
{% autoescape true js %} 
    Everything will be automatically escaped in this block 
    using the js escaping strategy 
{% endautoescape %} 
{% autoescape true %}
    Everything will be automatically escaped in this block
{% endautoescape %}

{% autoescape false %}
    Everything will be outputed as is in this block
{% endautoescape %}

{% autoescape true js %}
    Everything will be automatically escaped in this block
    using the js escaping strategy
{% endautoescape %}
而我这么测试。输出的还是原本的内容。
{% autoescape true %} 
   

aaaa 
{% endautoescape %} 
 
{% autoescape false %} 
    aaaa 
{% endautoescape %} 
 
{% autoescape true js %} 
    <script> <br /> function aaa(){alert(&#39;x&#39;);} <br /> </script> 
{% endautoescape %} 
{% autoescape true %}
    aaaa
{% endautoescape %}

{% autoescape false %}
    aaaa
{% endautoescape %}

{% autoescape true js %}
 <script><br /> function aaa(){alert(&#39;x&#39;);}<br /> </script>
{% endautoescape %}
这个请教各位路过的师兄了。。。
他官方文档还说,如果使用了 {% autoescape true %} 那么里面的内容都会被转义成安全的内容,除非你使用raw过滤器。
{% autoescape true %} 
    {{ safe_value|raw }} 
{% endautoescape %} 
{% autoescape true %}
    {{ safe_value|raw }}
{% endautoescape %}
另外,twig里函数的返回值都是安全的比如 macros parent


raw标签
raw标签,保证区块内的数据不被模板引擎解析。{% raw %} 
   

     
        {% for item in seq %} 
           
  • {{ item }}
  •  
        {% endfor %} 
       
 
{% endraw %} 
{% raw %}
   

        {% for item in seq %}
           
  • {{ item }}

  •     {% endfor %}
       

{% endraw %}
flush标签
1.5版本新增内容
告诉模板,刷新输出缓存,在内部其实是调用了php的flush函数
{% flush %} 
{% flush %}

do 标签
1.5版本新增内容
do 标签的作用就像是输出标签一样{{ }},他可以计算一些表达式,区别是不打印出任何东西
{% do 1 + 2 %} 
{% do 1 + 2 %}


标签的学习到此结束了。掌声鼓励下。。。。。下面进入过滤器的学习。。。。。。呱唧呱唧

摘自 jiaochangyun的专栏

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/478459.htmlTechArticleuse标签 use标签是1.1版本新添加内容。 这个use标签主要是来解决模板只能从一个父模板继承,而你又想重用其他模板的问题。但是use标签只...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

使命召喚戰區手遊怎麼設定中文 使命召喚戰區手遊怎麼設定中文 Mar 22, 2024 am 08:41 AM

使命召喚戰區手遊怎麼設定中文

米家怎麼加電視 米家怎麼加電視 Mar 25, 2024 pm 05:00 PM

米家怎麼加電視

VSCode 設定中文:完全指南 VSCode 設定中文:完全指南 Mar 25, 2024 am 11:18 AM

VSCode 設定中文:完全指南

解讀PHP版本NTS的意思與差異 解讀PHP版本NTS的意思與差異 Mar 27, 2024 am 11:48 AM

解讀PHP版本NTS的意思與差異

大模型一對一戰鬥75萬輪,GPT-4奪冠,Llama 3位列第五 大模型一對一戰鬥75萬輪,GPT-4奪冠,Llama 3位列第五 Apr 23, 2024 pm 03:28 PM

大模型一對一戰鬥75萬輪,GPT-4奪冠,Llama 3位列第五

解決PHP寫入txt檔案中文亂碼的技巧 解決PHP寫入txt檔案中文亂碼的技巧 Mar 27, 2024 pm 01:18 PM

解決PHP寫入txt檔案中文亂碼的技巧

Outlook卡在新增帳戶[修復] Outlook卡在新增帳戶[修復] Mar 23, 2024 pm 12:21 PM

Outlook卡在新增帳戶[修復]

抖音矩陣管理系統推薦哪個版本好?矩陣式行銷該如何做呢? 抖音矩陣管理系統推薦哪個版本好?矩陣式行銷該如何做呢? Mar 21, 2024 pm 03:50 PM

抖音矩陣管理系統推薦哪個版本好?矩陣式行銷該如何做呢?

See all articles