您的位置 首页 php

Twig模板引擎

twig

一、模板引擎

模板引擎(Web开发的模板引擎)是为了用户界面与业务数据(内容)分离而产生的,它可以生成特定格式文档,用于网站的模板引擎就会生成一个标准的 html 文档,其本质就是根据一定的规则进行变量替换。模板引擎可以解耦前后端,提高开发效率。

Twig是一款灵活、快速、安全的PHP模板引擎,类似于其他的模板引擎, 如 Smarty 、Django、Jinja等。每种模板引擎的实现本质是相同的——就是变量替换。

二、Twig安装及使用

目前而言,安装应该都是 composer 工具安装。

composer require "twig/twig:~2.0"
require_once '/path/to/vendor/autoload.php';
$loader = new \Twig\Loader\ArrayLoader([
 'index' => 'Hello {{ name }}!',
]);
$twig = new \Twig\Environment($loader);
echo $twig->render('index', ['name' => 'Fabien']);
 

三、基本语法

# 输出变量
{{ foo }}
# 判断
{% if foo %}
	{{ foo }}
{% endif %}
# for (foo array)
{% for x in foo %}
	{{ x }}
{% endfor %}
# 格式化(foo array)
{{ foo | json_encode }}
# 运算
{{ foo ? true : false }}
{{ foo + 2 }}
# html 扩展
{% extends "base.html" %}
{% block title %}Index{% endblock %}
{% block head %}
 {{ parent() }}
 <style type="text/css">
 .important { color: #336699; }
 </style>
{% endblock %}
{% block content %}
 <h1>Index</h1>
 <p class="important">
 Welcome to my awesome homepage.
 </p>
{% endblock %}
 

更多用法请参考官方文档。

四、使用场景

1 目前流行的MVC模式框架的 渲染 模板

2 发送邮件的内容渲染模板

针对第二种使用场景,这里给出业务实际应用场景,现在有线上预警实时,在发送异常时要发送报告邮件,且邮件格式要使用表格,并具备一定的美观性,这时就可以在发送邮件时,使用twig处理一下,然后再把处理后的内容发送邮件即可,伪代码如下:

# 1 首先引入twig自动加载类,如果是composer安装则不需要

require_once(BASE_DIR . '/deploy/framework/Twig/Autoloader.php');
 

# 2 获取twig类,使用其render方法

<?php 
class Util {
	/** 
	 * @return \Twig_Environment
	 */
	public static function Twig()
	{ 
	 $autoloader = new \Twig_Autoloader();
	 $autoloader->register(true);
	 $twig = new \Twig_Environment(new \Twig_Loader_Filesystem(array(
	 '__main__' => app()->basePath() . '/views'
	 )));
	 return $twig;
	} 
}
 

# 3 代码中使用

$twig = Util::Twig(); 
$context = $twig->render('warning.html', array('foo' => $foo));
# 4 warning.html代码
<!DOCTYPE html>
<html lang="zh-cn"
 style="margin: 0;padding:0;width:100%;">
	<head>
	 <meta charset="UTF-8">
	 <meta name="viewport"
	 content="width=device-width, initial-scale=1.0">
	 <meta http-equiv="X-UA-Compatible"
	 content="ie=edge">
	 <title>实时监控预警邮件</title>
	</head>
	<body>
		{{ foo }}
	</body>
</html>
 

欢迎一起交流学习!

1 twig官方文档,

2 smarty 模板引擎

3

文章来源:智云一二三科技

文章标题:Twig模板引擎

文章地址:https://www.zhihuclub.com/152146.shtml

关于作者: 智云科技

热门文章

网站地图