twig基本语法

1.输出 {{    }}

2.判断 {%    %}

3.注释 {#      #}

具体使用时参考https://twig.symfony.com/doc/2.x/官网文档进行查询

twig的核心概念是用类的继承来实现各个页面,构成其间的结构关系    ---------重要!!!!!

twig也是用来输出html代码的一种语言,更为清楚和简单

下面用慕课网来进行说明

https://class.imooc.com/

可以看到慕课网有就业办,实战课程,等几个子网页,这些子网页都是分为三部分,中间正文,开头和结尾,他们的开头和结尾都是一样的,所以可以这样设计

首先设计一个抽象基类类,有三个方法,

abstract public BasePage{public function getHeader(); //获取页面头部 public function getMainText(); //获取页面正文 public function getTail(); //获取页面尾部 }

接下来,各个子页面都可以继承该基类,使用它的getHeader 和 getTail方法,重写getMainText方法,比如问答页面来说,

class QuestionPage extends BasePage{public function getMainText(){// TODO: Implement getMainText() method.return $this->getQuestion().$this->getRightMenu().$this->getTopMenu();}public function getTopMenu(){}public function getRightMenu(){}public function getQuestion(){}
}

可以看到继承了BasePage类,这样子就只需要编写和BasePage页面不同的内容即可,这里问答页面由上面和右侧的菜单,还有中间的正文问题,可以看到还有等我回答,热门回答等几个不同的页面

这几个页面之间,他们的上侧菜单都是相同的,但是右侧菜单是不相同的,这样以书写一个最新回答页面为例来讲,

class NewQuestion extends QuestionPage{public $content;  //具体内容public function getRightMenu(){}  //右侧菜单内容不同,改变这一点即可
}

可以看到具体内容不同,所以重新定义了$content变量,这样getQuestion时就能返回不同的内容,然后右侧菜单不同,所以重写右侧菜单函数即可

大概就是这样的意思,依次推进,提取其中相同的特性,确定类之间的继承关系,这样子代码的可扩展性更高并且更好去维护,并且像相同的页面的Session缓存时间要长一些, 而像每个页面不同的部分的缓存时间就短一些

,可以进行不同的设置

下面对twig在symfony3之中的使用进行说明,

1.生成过滤器

使用getfilter

/ src/Twig/AppExtension.php
namespace App\Twig;use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;class AppExtension extends AbstractExtension
{public function getFilters()        //过滤函数{return [new TwigFilter('price', [$this, 'formatPrice']),   //使用函数formatPrice进行过滤,并且将过滤产生的对象赋给price];}public function formatPrice($number, $decimals = 0, $decPoint = '.', $thousandsSep = ','){$price = number_format($number, $decimals, $decPoint, $thousandsSep);$price = '$'.$price;return $price;}

记录一个小注释

{@inheritdoc}       将父类注释都继承下来

use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;class AppExtension extends AbstractExtension
{public function getFunctions(){return [new TwigFunction('area', [$this, 'calculateArea']),      //计算面积,将值返回给area];}public function calculateArea(int $width, int $length){return $width * $length;}

暂时不明白这两种方式有什么区别

注册扩展时有两种方法,

php bin/console debug:twig --filter=price    //这种只会更新filter的
php bin/console debug:twig    //这种会将functions和filter的都更新      

dsadsa打打 
=price
 

转载于:https://www.cnblogs.com/eenio/p/10463244.html

twig模板基本学习相关推荐

  1. PHP Twig 模板引擎

    1.应用场景 用于编写自定义的PHP框架, 加载第三方使用模板引擎组件. 2.学习/操作 1.介绍 The flexible, fast, and secure template engine for ...

  2. Twig 的 tags学习(中文) 之一

    twig 的tags学习 之一 http://blog.csdn.net/jiaochangyun/article/details/7178372 twig 的tags学习 之二 http://blo ...

  3. twig模板引擎使用php,Twig模板引擎用法入门教程_PHP

    本文实例讲述了Twig模板引擎用法.分享给大家供大家参考,具体如下: 介绍 Twig是一个灵活.高效并且安全的PHP模板引擎. 如果你使用过Smarty.Django或者Jinja这类基于文本的模板引 ...

  4. php2twig,symfony2 twig模板引擎,symfony2twig模板_PHP教程

    symfony2 twig模板引擎,symfony2twig模板 1.基本语法 Says something:{{ }} Does something:{% %} Comment something: ...

  5. twig php代碼,有没有办法在wordpress的.twig文件中编写php代码?我试图使用.twig模板文件中的表单值发送邮件...

    有没有办法在wordpress的.twig文件中编写php代码?我正在尝试使用.twig模板文件中的表单值发送邮件. 第PAGE-SHORTEFORM.TWIG页 {% extends "b ...

  6. velocity(vm)模板引擎学习介绍及语法

    velocity模板引擎学习 velocity与freemaker.jstl并称为java web开发三大标签技术,而且velocity在codeplex上还有.net的移植版本NVelocity,( ...

  7. (转)DEDECMS模板原理、模板标签学习 - .Little Hann

    本文,小瀚想和大家一起来学习一下DEDECMS中目前所使用的模板技术的原理: 什么是编译式模板.解释式模板,它们的区别是什么? 模板标签有哪些种类,它们的区别是什么,都应用在哪些场景? 学习模板的机制 ...

  8. php模板数组长度判断,Twig模板获取数组长度【原创】

    最近在项目中,遇到的问题. 要求共添加8条记录,可编辑.而且有的记录是有数据的. 解决这样的问题,一开始想到将数组遍历,可是空的记录怎么循环出来? 于是想到用两个for循环遍历数组,一个遍历有数据的记 ...

  9. twig模板引擎使用php,Twig模板引擎

    使用Twig Twig是一个灵活,快速,安全的PHP模板语言.它将模板编译成经过优化的原始PHP代码.Twig拥有一个Sandbox模型来检测不可信的模板代码.Twig由一个灵活的词法分析器和语法分析 ...

最新文章

  1. Linux服务笔记之二:SSH远程登录
  2. Fragment专辑(一):Fragment简介
  3. 多线程在javaweb中的应用
  4. 心​理​学​家​告​诉​你​:​男​女​怎​样​才​叫​合​适
  5. hdu 3473 Minimum Sum 划分树
  6. C++虚函数的实现原理(最通俗但并不想专业的解释)
  7. REDHAT5.6dhcp服务器及dhcp中继代理配置
  8. restframe_work1
  9. 程序员必备算法——算法相关链接总结
  10. HTML5开发能不能取代原生开发?
  11. 进程线程之pid,tid
  12. Java中frame和panel区别,JFrame 和JPanel 的关系-区别(学习笔记)
  13. 测试学习-测试工具wireshark、HFS、wlan信号
  14. 一台“真正的”网吧电影服务器只要6000元
  15. ps设计精讲精练笔记
  16. PPT进阶篇---如何让你的声音好听
  17. JAVA_HOME指的是什么内容?
  18. 分贝,毫瓦分贝与瓦特之间的关系
  19. IDEA创建新的类(Java文件)时,自动添加作者创建时间(文件注释)等信息的设置方法
  20. 你还深陷在上半年工作和生活的一团乱麻中?可以试一下我说的这个“破局”之法

热门文章

  1. php单例模式代码,php设计模式之单例模式代码
  2. fopen无法创建文件_Linux中一切皆文件,除了网卡
  3. r中gglot怎么组合多张图_继电器组合扫盲篇
  4. C++中sort排序之自定义排序cmp(入门)
  5. SparkStreaming简介
  6. NLP+语义分析(四)︱中文语义分析研究现状(CIPS2016、角色标注、篇章分析)
  7. [postgresql]postgresql的递归查询sql实例
  8. 【Stimulsoft Reports Silverlight教程】使用报表组件
  9. C++用new来创建对象和非new来创建对象的区别
  10. 用Python来玩微信跳一跳