twig 模板引擎使渲染视图更加优雅
在使用 laravel 的时候接触过 blade 模板引擎。在学习的时候,接触到了另外一个强大的模板引擎:twig
官网:https://twig.sensiolabs.org/
中文手册:http://download.csdn.net/detail/chenmoimg_/9840505
一、首先我们使用 composer 下载下来
这是 composer.json 的内容:
{
"name":"test",
"description":"easy test",
"keywords":[
"easy","test"
],
"require":{
"php":">= 5.3.0",
"twig/twig":"*"
},
"repositories":{
"packagist":{
"type":"composer",
"url":"https://packagist.phpcomposer.com"
}
}
}
- cmd 进入到此文件目录,composer install 回车运行。
- 在此文件目录就会多了一个 《vendor》目录,我们的 twig 就在此目录里
二、简单使用 twig
Controller.php 内容:
<?php
class Controller{
//存储模板页面值。
protected $assign;
/***
* @ 模板页面赋值。
* @param $name
* @param $value
*/
public function assign($name,$value)
{
$this->assign[$name]=$value;
}
/***
* @ 渲染模板。
* @param $view
*/
public function display($view){
#当前项目所在目录
$dir=str_replace("\\","/",__DIR__);
#视图文件存在的路径
$file=$dir.'/views/'.$view;
#判断渲染视图是否存在
if(file_exists($file)){
#要想使用 composer 下载的包,要先引入此文件。
include $dir."/vendor/autoload.php";
#让 twig 加载视图文件目录
$loader = new \Twig_Loader_Filesystem($dir.'/views');
$twig = new \Twig_Environment($loader);
#加载渲染的页面
$template = $twig->load($view);
#输出模板值
echo $template->render($this->assign?$this->assign:'');
}
}
}
//文件结束。
IndexController.php 内容:
<?php
include 'Controller.php';
class IndexController extends Controller{
public function index(){
$title="我是标题";
$this->assign("title",$title);
$this->display("views.html");
}
}
(new IndexController())->index();
//文件结束。
然后我们在 views 目录创建 views.html
views.html 内容:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
{{title}}
</body>
</html>
结束。
twig 模板引擎使渲染视图更加优雅的更多相关文章
- SSTI(以Twig模板引擎为例)
一.模板注入与常见Web注入 就注入类型的漏洞来说,常见 Web 注入有:SQL 注入,XSS 注入,XPATH 注入,XML 注入,代码注入,命令注入等等.注入漏洞的实质是服务端接受了用户的输入,未 ...
- opencart 引入 TWIG 模板引擎
1.首先将 twig 包放入 system\library 目录. 2.在 system/startup.php 文件最后添加引入语句. require_once(DIR_SYSTEM . 'lib ...
- node(基础)_node.js中的http服务以及模板引擎的渲染
一.前言 本节的内容主要涉及: 1.node.js中http服务 2.node.js中fs服务 3.node.js中模板引擎的渲染 4.利用上面几点模拟apache服务器 二.知识 1.node.js ...
- 构建自己的PHP框架(Twig模板引擎)
完整项目地址:https://github.com/Evai/Aier Twig 模板引擎 模版引擎 twig 的模板就是普通的文本文件,也不需要特别的扩展名,.html .htm .twig 都可以 ...
- MVVM 和 VUE三要素:响应式、模板引擎、渲染
MVVM 和 VUE三要素:响应式.模板引擎.渲染:https://blog.csdn.net/weixin_37644989/article/details/94409430
- 原生twig模板引擎详解(安装使用)
最近在学习SSTI(服务器模板注入),所以在此总结一下 0x00 Twig的介绍 什么是Twig? Twig是一款灵活.快速.安全的PHP模板引擎. Twig的特点? 快速:Twig将模板编译为纯粹的 ...
- doT js 模板引擎【初探】要优雅不要污
js中拼接html,总是感觉不够优雅,本着要优雅不要污,决定尝试js模板引擎. JavaScript 模板引擎 JavaScript 模板引擎作为数据与界面分离工作中最重要一环,越来越受开发者关注. ...
- 用模板引擎Art-Template渲染空格或换行符引发的一场“命案”
一.绪论 说实话,真的不知道如何给这篇博客命名,因为我觉得应该有一些小伙伴遇到跟我同样的问题正在抓耳挠腮中. 二.导火索 最近在做一个移动H5翻页的功能,类似于MAKA模板那种.假设大致框架如下 ...
- yii2 使用twig 模板引擎
yii2 默认使用PHP 和html 混合的方式来写视图层,但我个人还是喜欢纯模板语言的方式.而且已经非常习惯使用twig的语法,最近想使用yii2进行开发,所以还是选择使用twig视图引擎. git ...
随机推荐
- nyoj--914--Yougth的最大化(二分查找)
Yougth的最大化 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最 ...
- [JZOJ 5437] [NOIP2017提高A组集训10.31] Sequence 解题报告 (KMP)
题目链接: http://172.16.0.132/senior/#main/show/5437 题目: 题解: 发现满足上述性质并且仅当A序列的子序列的差分序列与B序列的差分序列相同 于是我们把A变 ...
- 安卓-活动Activity
Android有4大组件,活动 Activity,服务 Service ,广播接收器 Brostcast receiver,内容提供器 Content Provider 安卓活动的生命周期有7种, o ...
- Linux mount挂载umount卸载
mount/umount挂载/卸载 对于Linux用户来讲,不论有几个分区,分别分给哪一个目录使用,它总归就是一个根目录.一个独立且唯一的文件结构 Linux中每个分区都是用来组成整个文件系统的一部分 ...
- 如何去掉边框及input的兼容问题?
右偷个懒,发现别人写的也不错,我就做个小搬运工 如何去掉边框及input的兼容问题? 说到input,又不得不说它的兼容问题.input如何兼容各个浏览器呢? 第一步:清除input的border的默 ...
- (转载)项目实战工具类(一):PhoneUtil(手机信息相关)
项目实战工具类(一):PhoneUtil(手机信息相关) 可以使用的功能: 1.获取手机系统版本号 2.获取手机型号 3.获取手机宽度 4.获取手机高度 5.获取手机imei串号 ,GSM手机的 ...
- 【转载】HTTP Session 内存到内存复制的拓扑结构
http://www.oschina.net/question/129540_23215 HTTP 协议本身是“连接 - 请求 - 应答 - 关闭连接”的模式,是一种无状态协议:然而随着 web 动态 ...
- 强化学习(3)-----DQN
看这篇https://blog.csdn.net/qq_16234613/article/details/80268564 1.DQN 原因:在普通的Q-learning中,当状态和动作空间是离散且维 ...
- vue生命周期-学习心得
每个Vue实例在被创建之前都要经过一系列的初始化过程,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.销毁等一系列过程,这个过程就是vue的生命周期. 1 vue生命周期图 {: ...
- POJ 2311 Cutting Game(SG函数)
题目描述 意思就是说两个人轮流剪纸片,直到有一个人剪出1*1的方格就算这个人赢了.然后给出纸片的长和宽,求先手会赢还是会输 (1<=n,m<=200) 题解 看了一眼,这不是裸的SG吗 啪 ...