Twig 的 tags学习(中文) 之三 完结_PHP教程
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
{% spaceless %}
foo
{% endspaceless %}
{# output will be
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 %}
{% endautoescape %}
{% autoescape false %}
aaaa
{% endautoescape %}
{% autoescape true js %}
<script> <br /> function aaa(){alert('x');} <br /> </script>
{% endautoescape %}
{% autoescape true %}
aaaa
{% endautoescape %}
{% autoescape false %}
aaaa
{% endautoescape %}
{% autoescape true js %}
<script><br />
function aaa(){alert('x');}<br />
</script>
{% endautoescape %}
这个请教各位路过的师兄了。。。
他官方文档还说,如果使用了 {% autoescape true %} 那么里面的内容都会被转义成安全的内容,除非你使用raw过滤器。
{% autoescape true %}
{{ safe_value|raw }}
{% endautoescape %}
{% autoescape true %}
{{ safe_value|raw }}
{% endautoescape %}
另外,twig里函数的返回值都是安全的比如 macros parent
raw标签
raw标签,保证区块内的数据不被模板引擎解析。{% raw %}
- {{ item }}
{% for item in seq %}
{% endfor %}
{% endraw %}
{% raw %}
- {{ item }}
{% for item in seq %}
{% endfor %}
{% endraw %}
flush标签
1.5版本新增内容
告诉模板,刷新输出缓存,在内部其实是调用了php的flush函数
{% flush %}
{% flush %}
do 标签
1.5版本新增内容
do 标签的作用就像是输出标签一样{{ }},他可以计算一些表达式,区别是不打印出任何东西
{% do 1 + 2 %}
{% do 1 + 2 %}
标签的学习到此结束了。掌声鼓励下。。。。。下面进入过滤器的学习。。。。。。呱唧呱唧
摘自 jiaochangyun的专栏

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Call of Duty Warzone은 새로 출시된 모바일 게임입니다. 많은 플레이어들이 이 게임의 언어를 중국어로 설정하는 방법에 대해 매우 궁금해하고 있습니다. 실제로 플레이어는 중국어 언어 팩만 다운로드하면 됩니다. 사용 후 수정하세요. 자세한 내용은 이 중국어 설정 방법 소개에서 배울 수 있습니다. 모바일 게임 Call of Duty: Warzone의 중국어 언어 설정 방법 1. 먼저 게임에 접속한 후 인터페이스 오른쪽 상단에 있는 설정 아이콘을 클릭합니다. 2. 나타나는 메뉴바에서 [다운로드] 옵션을 찾아 클릭하세요. 3. 이 페이지에서 [SIMPLIFIEDCHINESE](중국어 간체)를 선택하여 중국어 간체 설치 패키지를 다운로드합니다. 4. 설정으로 돌아가기

많은 사용자가 현대 생활에서 Xiaomi 스마트 홈 상호 연결의 전자 생태계를 점점 더 선호하고 있습니다. Mijia 앱에 연결하면 휴대폰으로 연결된 장치를 쉽게 제어할 수 있습니다. 그러나 많은 사용자는 여전히 Mijia를 추가하는 방법을 모릅니다. 이 튜토리얼 가이드는 도움이 필요한 모든 사람에게 도움이 될 수 있도록 구체적인 연결 방법과 단계를 제공합니다. 1. Mijia 앱을 다운로드한 후 Xiaomi 계정을 생성하거나 로그인합니다. 2. 추가 방법: 새 장치의 전원을 켠 후 휴대폰을 장치에 가까이 가져간 다음 Xiaomi TV를 켜십시오. 정상적인 상황에서는 "확인"을 선택하여 장치 연결 프로세스에 들어갑니다. 메시지가 나타나지 않으면 수동으로 장치를 추가할 수도 있습니다. 방법은 스마트 홈 앱에 들어간 후 왼쪽 하단에 있는 첫 번째 버튼을 클릭하는 것입니다.

중국어 VSCode 설정: 전체 가이드 소프트웨어 개발에서 Visual Studio Code(줄여서 VSCode)는 일반적으로 사용되는 통합 개발 환경입니다. 중국어를 사용하는 개발자의 경우 VSCode를 중국어 인터페이스로 설정하면 작업 효율성이 향상될 수 있습니다. 이 기사에서는 VSCode를 중국어 인터페이스로 설정하는 방법을 자세히 설명하고 특정 코드 예제를 제공하는 완전한 가이드를 제공합니다. 1단계: 언어 팩을 다운로드하고 설치합니다. VSCode를 연 후 왼쪽을 클릭합니다.

PHP 버전 NTS의 의미와 차이점 PHP는 웹 개발 분야에서 널리 사용되는 널리 사용되는 서버 측 스크립팅 언어입니다. PHP에는 ThreadSafe(TS)와 Non-ThreadSafe(NTS)라는 두 가지 주요 버전이 있습니다. PHP 공식 웹사이트에서는 PHPNTS와 PHPTS라는 두 가지 PHP 다운로드 버전을 볼 수 있습니다. 그렇다면 PHP 버전 NTS는 무엇을 의미합니까? TS버전과 차이점이 뭔가요? 다음,

Llama3에 대해 새로운 테스트 결과가 공개되었습니다. 대형 모델 평가 커뮤니티 LMSYS가 공개한 대형 모델 순위 목록에서 Llama3는 5위에 올랐으며, 영어 부문에서는 GPT-4와 함께 공동 1위를 차지했습니다. 다른 벤치마크와는 그림이 다릅니다. 이 목록은 모델 간 1:1 대결을 기반으로 하며, 네트워크 전체의 평가자들이 각자의 제안과 점수를 내립니다. 결국 Llama3가 5위를 차지했고, GPT-4와 Claude3 Super Cup Opus의 세 가지 버전이 그 뒤를 이었습니다. 영어 싱글 목록에서는 Llama3가 Claude를 제치고 GPT-4와 동점을 기록했습니다. 이 결과에 대해 Meta의 수석 과학자 LeCun은 매우 기뻐했으며 트윗을 통해 다음과 같이 말했습니다.

PHP로 작성한 중국어 왜곡 문자를 txt 파일로 해결하는 방법 인터넷의 급속한 발전과 함께 널리 사용되는 프로그래밍 언어인 PHP를 점점 더 많은 개발자가 사용하고 있습니다. PHP 개발에서는 중국어 내용이 포함된 txt 파일을 포함하여 텍스트 파일을 읽고 써야 하는 경우가 많습니다. 그러나 인코딩 형식 문제로 인해 때때로 작성된 중국어가 깨져서 나타날 수 있습니다. 이 기사에서는 PHP로 txt 파일에 작성된 중국어 문자 왜곡 문제를 해결하는 몇 가지 기술을 소개하고 구체적인 코드 예제를 제공합니다. PHP, 텍스트의 문제 분석

Douyin의 인기로 인해 점점 더 많은 기업과 개인이 Douyin을 마케팅에 사용하기 시작했습니다. Douyin 마케팅의 중요한 도구로서 Douyin 매트릭스 관리 시스템도 광범위한 주목을 받았습니다. 그렇다면 어떤 버전의 Douyin 매트릭스 관리 시스템이 권장됩니까? 이 기사에서는 이 질문에 답하고 Douyin 매트릭스 마케팅을 플레이하는 방법을 소개합니다. 1. Douyin 매트릭스 관리 시스템의 어떤 버전이 권장됩니까? Douyin 매트릭스 관리 시스템에는 다양한 버전이 현재 시장에서 널리 사용되고 있습니다. Douyin의 매트릭스 관리 시스템 공식 버전은 특정 운영 경험과 예산을 갖춘 기업을 위해 특별히 설계되었으며 다중 계정 관리, 데이터를 실현할 수 있습니다. 분석 및 재료 라이브러리 기능. 이 시스템은 Douyin 계정을 관리하는 효율적인 방법을 제공하고 회사가 운영 데이터를 더 잘 이해하도록 돕습니다.
![계정 추가 시 Outlook이 멈춤 [해결됨]](https://img.php.cn/upload/article/000/887/227/171116770937641.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
Outlook에서 계정을 추가하는 데 문제가 발생하면 다음 해결 방법을 시도하여 해결할 수 있습니다. 일반적으로 이는 잘못된 네트워크 연결, 손상된 사용자 프로필 또는 기타 일시적인 문제로 인해 발생할 수 있습니다. 이 문서에서 제공하는 방법을 통해 이러한 문제를 쉽게 해결하고 Outlook이 정상적으로 실행될 수 있는지 확인할 수 있습니다. 계정 추가 시 Outlook이 멈춤 Outlook이 계정 추가 시 멈춘 경우 아래에 언급된 수정 사항을 사용하십시오. 인터넷 연결을 끊었다가 다시 연결하십시오. 일시적으로 바이러스 백신 소프트웨어를 비활성화하십시오. 새 Outlook 프로필을 만드십시오. 안전 모드에서 계정 추가를 시도하십시오. IPv6 비활성화 Microsoft 지원 및 복구 도우미 실행 수리 Office 응용 프로그램 Outlook 계정 추가 필요
