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官方文档,https://twig.symfony.com/doc/2.x/
2 smarty 模板引擎 https://www.smarty.net/files/docs/manual-en-2.6.pdf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值