twig模板基本学习
twig基本语法
1.输出 {{ }}
2.判断 {% %}
3.注释 {# #}
具体使用时参考https://twig.symfony.com/doc/2.x/官网文档进行查询
twig的核心概念是用类的继承来实现各个页面,构成其间的结构关系 ---------重要!!!!!
twig也是用来输出html代码的一种语言,更为清楚和简单
下面用慕课网来进行说明
可以看到慕课网有就业办,实战课程,等几个子网页,这些子网页都是分为三部分,中间正文,开头和结尾,他们的开头和结尾都是一样的,所以可以这样设计
首先设计一个抽象基类类,有三个方法,
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 = , $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的都更新
dsa
dsa打
打
=price
twig模板基本学习的更多相关文章
- twig模板的进一步学习以及在symfony当中的使用
首先,twig可以理解为用于输出html代码的,虽然用PHP等其他语言也可以输出,但是twig更为简洁高效,同时twig模板被编译成原生的php类缓存起来,所以才会这么快, 其实twig跟php类差不 ...
- 原生twig模板引擎详解(安装使用)
最近在学习SSTI(服务器模板注入),所以在此总结一下 0x00 Twig的介绍 什么是Twig? Twig是一款灵活.快速.安全的PHP模板引擎. Twig的特点? 快速:Twig将模板编译为纯粹的 ...
- opencart 引入 TWIG 模板引擎
1.首先将 twig 包放入 system\library 目录. 2.在 system/startup.php 文件最后添加引入语句. require_once(DIR_SYSTEM . 'lib ...
- (转)DEDECMS模板原理、模板标签学习 - .Little Hann
本文,小瀚想和大家一起来学习一下DEDECMS中目前所使用的模板技术的原理: 什么是编译式模板.解释式模板,它们的区别是什么? 模板标签有哪些种类,它们的区别是什么,都应用在哪些场景? 学习模板的机制 ...
- NVelocity模板引擎学习笔记
NVelocity模板引擎学习笔记 学习模板引擎有一段时间现在做一些总结
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(9)-TT模板的学习
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(9)-TT模板的学习 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2): ...
- 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问
中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...
- symfony注册Twig模板中使用自定义PHP方法
// 注:只是在此做下记录,有兴趣的可以参考,不做实际教程文档// 官方文档,https://symfony.com/doc/2.8/templating/twig_extension.html// ...
- 构建自己的PHP框架(Twig模板引擎)
完整项目地址:https://github.com/Evai/Aier Twig 模板引擎 模版引擎 twig 的模板就是普通的文本文件,也不需要特别的扩展名,.html .htm .twig 都可以 ...
随机推荐
- FastDFS 分布式文件系统搭建
安装依赖环境yum install make cmake gcc gcc-c++ pcre-devel zlib-devel perl-devel 安装libfastcommon-master.zip ...
- js拖拽效果详细讲解
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- CAS server打包小白教程
如题,cas是耶鲁大学的一个开源的登录系统,功能齐全,受到很多企业的青睐. 耶鲁大学都不知道那你太out了,我告诉你吧!耶鲁大学就是山东一个椰子树长的很多的地方的大学,很牛逼. 很多新手程序员简历都喜 ...
- MyBatis使用注意事项
目录 1. 使用何种映射器配置 2. 对象生命周期和作用域 SqlSessionFactoryBuilder SqlSessionFactory SqlSession 映射器实例(Mapper Ins ...
- mysql MHA架构搭建过程
[环境介绍] 系统环境:Red Hat Enterprise Linux 7 + 5.7.18 + MHA version 0.57 系统 IP 主机名 备注 版本 xx系统 192.168.142. ...
- SpringBoot中Application开启与关闭
0.声明 缘由:没有学过或者没有经历SpringBoot的Application运行机制的话,一定会好奇,博主为啥会写一篇关闭开启的博文,是不是好幼稚?(/o(╥﹏╥)o),待我娓娓道来......为 ...
- luogu P5288 [HNOI2019]多边形
传送门 这是什么神仙操作... 首先要注意一些性质.首先每一个\((x,n)\)的边可以把当前多边形分成两半,这两半的操作是独立的.然后对于某一个没有\((x,n)\)的边的多边形,最优操作是唯一的. ...
- Trie树的二三事QWQ
写在前面 Trie,又称字典树,是一种用于实现字符串快速检索的多叉树结构.Trie的每个结点都拥有若干字符指针,若在插入或检索字符串时扫描到一个字符c,就沿着当前节点的c这个字符指针,走向该指针指向的 ...
- cvc-complex-type.2.4.a: Invalid content was found starting with element 'asy
- (一)校园信息通微信小程序从前端到后台整和笔记
前段时间接触了微信小程序,现在回过头来做一些笔记. 先上效果图 后台数据管理界面(PHP) 校园信息通微信小程序前端界面 下面先简单的说一下怎样部署一个微信小程序 首先是前端 微信小程序有它专门的开发 ...