加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP模版引擎 – Twig

发布时间:2020-05-25 23:17:53 所属栏目:PHP 来源:互联网
导读:在网站开发过程中模版引擎是必不可少的,PHP中用的最多的当属Smarty了。目前公司系统也是用的Smarty,如果要新增一个页面只需把网站的头、尾和左侧公共部分通过Smarty的include方式引入进来,然后主体部分写内容即可,用起来也是相当方便。这也是一种比较通用
</table>

其他页面的PHP内容除了模版名称不一样外,其他内容完全一样,所以后面的PHP页面就不写了。
那接下来的主要工作就是写模版了,既然支持继承,那应该有一个父类,其他页面来继承这个类。base.html就是模版的父类,其内容如下:

</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="xml plain">{# /view/twig/templates/base.html #}
<div class="line number2 index1 alt1"><code class="xml plain"><!DOCTYPE html>
<div class="line number3 index2 alt2">
<code class="xml plain"><<code class="xml keyword">html<code class="xml plain">>

{% block title %}Home{% endblock %} - Twig
Twig Template Test < Home < About < Contact 系统模块1 系统模块2 Twig Footer{% endblock %}

</td>

</tr></table>

基本的页面框架没太多说的,主要看看中间有5个block - {% block blockname%}{% endblock %} 每个BLOCK代表一个块, 这里的块可以理解成PHP父类中的一个方法。

基本的html框架搭好后,index.html该如何来写呢?首先该继承base页面,然后再考虑是否要重写base页面的内容,先只做继承看看效果。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

在网站开发过程中模版引擎是必不可少的,PHP中用的最多的当属Smarty了。目前公司系统也是用的Smarty,如果要新增一个页面只需把网站的头、尾和左侧公共部分通过Smarty的include方式引入进来,然后主体部分写内容即可,用起来也是相当方便。这也是一种比较通用的做法。但维护一段时间后发现有些凌乱了:

1. 公共部分内容越加越多了,不需要用的js、css在一些页面也被强制引进来了

2.新页面的css只能写在网页的body内,看起来总让人不爽。

3.左侧、头部、尾部若有特殊显示,操作起来不方便,只能在公共地方去做判断了。

当然这些页面问题在设计的时候可以通过合理的拆分网页来实现,当然最重要的还在于开发人员,在好的系统也经不起开发人员的折腾,一个项目经过多次转手后,接下来的维护人员那是相当痛苦的。不扯远了, 现在要说的是另一种模版开发思路。

在PHP中CLASS用过很多次了,有一个很有用的特性那就是继承,子类继承父类后可以直接调用父类的方法,也可以对父类的方法进行重写,同样PHP的模版引擎Twig也实现了这一点,模版的书写方式可以更方便。

Twig是开源框架Symfony2的默认模版引擎,主页是http://twig.sensiolabs.org/ 当前版本为Stable: 1.12.1 ,其他模版引擎能做的它都能做,这里主要整理下使用Twig的BLOCK方式编写模版页面。

以一个常见的排版为例,有三个链接,分别是首页、关于、联系三个页面,然后头部共用,尾部共用,中间部分分成左右两部分,左边共用,右边显示具体内容,貌似很多后台都是这种布局。
先看看首页 twig_index.php , 和Smarty差不多,初始化设置,然后设置变量并显示。

</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php plain"><?php
<div class="line number2 index1 alt1">
<code class="php keyword">require <code class="php string">'./Twig-1.12.1/lib/Twig/Autoloader.php'<code class="php plain">;

true display(

</td>

</tr>