首页 > 开发 > Php > 正文

Symfony2学习笔记之模板用法详解

2020-02-21 20:47:19
字体:
来源:转载
供稿:网友

本文实例讲述了Symfony2学习笔记之模板用法。分享给大家供大家参考,具体如下:

我们知道,controller负责处理每一个进入Symfony2应用程序的请求。实际上,controller把大部分的繁重工作都委托给了其它地方,以使代码能够被测试和重用。当一个controller需要生成HTML,CSS或者其他内容时,它把这些工作给了一个模板化引擎。

模板:

一个模板仅仅是一个文本文件,它能生成任意的文本格式(HTML,XML,CSV,LaTex...)。最著名的模板类型就是PHP模板了,可以被PHP解析的文本文件,它混合了文本和PHP代码。

<!DOCTYPE html><html>  <head>    <title>Welcome to Symfony!</title>  </head>  <body>    <h1><?php echo $page_title ?></h1>    <ul id="navigation">      <?php foreach ($navigation as $item): ?>        <li>          <a href="<?php echo $item->getHref() ?>">            <?php echo $item->getCaption() ?>          </a>        </li>      <?php endforeach; ?>    </ul>  </body></html>

但是Symfony2包中拥有一种更加强大的模板化语言叫Twig。 它允许你写简洁,可读法模板语言。对页面设计师更友好,在许多方面比PHP模板更加强大。

<!DOCTYPE html><html>  <head>    <title>Welcome to Symfony!</title>  </head>  <body>    <h1>{{ page_title }}</h1>    <ul id="navigation">      {% for item in navigation %}        <li><a href="{{ item.href }}">{{ item.caption }}</a></li>      {% endfor %}    </ul>  </body></html>

在这个Twig文件中,定义了三个类型的特别语法

{{...}} : "说某些事", 打印一个变量或者一个表达式的值到模板。
{%...%} : "做某些事",控制模板逻辑的标签,它用于执行比如for循环语句等。
{# 这是一个注释 #}, "注释"。

Twig也包含filters,在渲染之前修改内容。下面的语句显示把title变量全部渲染为大型。

{{ title|upper }}

Twig默认情况下有一大群的标签(tags)和过滤器(filters)可以使用。当然你也可以根据需要添加扩展。注册一个Twig扩展非常容易,创建一个新服务并把它标记为Twig.extension 标签。就跟你看到的一样,Twig也支持功能和新功能的添加。比如,下面使用一个标准的for标签和cycle功能函数来打印10个div 标签,用odd,even 类代替。

{% for i in 0..10 %}<div alss="{{ cycle(['odd','even'],i) }}"><!--一些其它HTML --></div>{% emdfor %}

Twig模板缓存

Twig很快。 每个Twig模板被编译到原生的PHP类,它将在运行时被渲染。编译过的类被保存在app/cache/{environment}/twig 目录下并在某些情况下,对整个调试非常有用。当debug模式可用时,一个twig模板如果发生改变将会被自动重新编译。这就意味着你可以在开发过程中随意的修改模板,而不必担心需要去清除内存了。当debug模式被关闭时,你必须手动的清除Twig缓存目录,以便能够重新生成Twig模板。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表