php的Twig模板语言:类似python的jinja2,语法什么的都是类似python
文档
- https://twig.symfony.com/doc/3.x/intro.html
模板路径:app/Resources/views/
母版:base.html.twig
DOCTYPE html>
{% block title %}自定义标题{% endblock title %}
MyWebSite
{% block body %}
{% endblock body %}
list.html.twig
{% extends "base.html.twig" %}
{% block title %}MyWebSite{% endblock title %}
{% block body %}
Welcome to MyWebSite!
{% endblock body %}
show.html.twig
{% extends "base.html.twig" %}
{% block title %}博客内容{% endblock title %}
{% block body %}
我的第一篇博客
{% endblock body %}
list.html.twig 和 show.html.twig 都继承了 base.html.twig,拥有了相同的页面布局
变量传递文件路径:src/AppBundle/Controller/BlogController.php
return $this->render('blog/show.html.twig',
array('title' => '博客标题', 'content' => '博客内容')
);
修改show.html.twig中block body
{{ title }}
{{ content }}
变量传递通过 {{ }} 这样的符号来传递
传递类型举例读取方式变量array(‘title’ => ‘博客标题’){{ title }}array结构array(‘content’ => $content){{ content[‘time’] }}类结构array(‘content’ => $content){{ content.time }}php原生方法去掉 html标签方法{{ content | strip_tags }} 流程控制src/AppBundle/Controller/BlogController.php
$content = array();
$content[] = array('category' => '类别1', 'text' => '内容1');
$content[] = array('category' => '类别2', 'text' => '内容2');
$content[] = array('category' => '类别1', 'text' => '内容3');
$content[] = array('category' => '类别2', 'text' => '内容4');
return $this->render('blog/show.html.twig', array('title' => '博客标题', 'content' => $content));
修改app/Resources/views/blog/show.html.twig,改成:
{% for cont in content %}
{% if cont['category'] == '类别2' %}
{{ cont['text'] }}
{% endif %}
{% endfor %}
循环遍历 : {% for cont in content %}
逻辑判断: {% if cont['category'] == '类别2' %}
{ path({{ cont['text'] }}
blog_list
为router.yml里边配置的路由名称
常用模板语法
// 默认值
{{ var|default('var is not defined') }}
关于Twig的详细使用可参考
-
Twig, 灵活、快速、安全的PHP模板语言
-
教你成为全栈工程师(Full Stack Developer) 九-让模板文件帮你快速开发网页