symfony入门学习资料之十三:symfony框架Twig模板语言的使用

symfony入门学习资料之十三:symfony框架Twig模板语言的使用

 

php的Twig模板语言:类似python的jinja2,语法什么的都是类似python

一、模板继承

模板路径:app/Resources/views/

母版:base.html.twig




   
     
     
     
     {% 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’ %}

链接生成

{{ cont['text'] }}

blog_list为router.yml里边配置的路由名称

你可能感兴趣的:(Symfony,TP5,Edusoho,php,html5,html,https,http)