goetas/twital

PHP模板引擎,结合了Twig和PHPTal的强大功能点

v1.5.0 2021-12-21 09:35 UTC

README

Build Status Scrutinizer Quality Score Code Coverage GitHub license Packagist

Twital是什么?

Twital是一个基于Twig(一个用于PHP的模板引擎,也是Symfomy的默认模板引擎)构建的模板引擎,它添加了一些快捷方式,使Twig的语法更适合基于HTML(XML、HTML5、XHTML、SGML)的模板。Twital从PHPTalTALAngularJSVue.js(仅就某些方面而言)中汲取灵感,将它们的语言语法与功能强大的Twig模板引擎系统相结合。

Twital与Twig完全兼容,所有Twig模板都可以使用Twital渲染。

为了更好地理解Twital的优势,考虑以下Twital模板,它简单地显示了一个数组中的用户列表

<ul t:if="users">
    <li t:for="user in users">
        {{ user.name }}
    </li>
</ul>

要使用Twig做同样的事情,你需要

{% if users %}
    <ul>
        {% for user in users %}
            <li>
                {{ user.name }}
            </li>
        {% endfor %}
    </ul>
{% endif %}

如你所见,Twital模板更易读,更简洁,并且你不需要担心打开和关闭块指令(它们是从HTML结构继承的)。

Twital的主要优势之一是控制语句的隐式存在,这使得模板更易读,更简洁。此外,它还具有所有Twig功能,例如模板继承、翻译、循环、过滤、转义等。

如果某些Twig功能不是直接对Twital可用,你可以自由混合Twital和Twig语法。

在下面的例子中,我们混合了Twital和Twig语法以使用Twig自定义标签

<h1 t:if="users">
    {% custom_tag %}
        {{ someUnsafeVariable }}
    {% endcustom_tag %}
</h1>

当需要时,你可以从Twig模板扩展

<t:extends from="layout.twig">
    
    <t:block name="content">
        Hello {{name}}!
    </t:block>
    
</t:extends>

你也可以从Twig扩展Twital模板

{% extends "layout.twital" %}
    
{% block content %}
    Hello {{name}}!
{% endblock %}
    

Twital功能和优势的演示可以在这里找到。

安装

推荐通过Composer安装Twital。

composer require goetas/twital

文档

访问http://twital.readthedocs.org/ 了解Twital的更详细文档。

入门

首先,你需要创建一个包含你的模板的文件(例如命名为demo.twital.html

<div t:if="name">
    Hello {{ name }}
</div>

之后,你需要创建一个PHP脚本来实例化所需的对象

require_once '/path/to/composer/vendor/autoload.php';
use Goetas\Twital\TwitalLoader;

$fileLoader = new Twig_Loader_Filesystem('/path/to/templates');
$twitalLoader = new TwitalLoader($fileLoader);

$twig = new Twig_Environment($twitalLoader);
echo $twig->render('demo.twital.html', array('name' => 'John'));

就这样!

Symfony用户

如果你是Symfony用户,你可以使用TwitalBundle将Twital添加到你的项目中。

该捆绑包集成了所有最常见的功能,如Asetic、表单、翻译、路由等。

Twig用户

从Twital 1.0.0版本开始,支持twig 1.x和2.x版本。

注意

本项目的代码遵循MIT许可证。如需专业支持,请联系goetas@gmail.com或访问https://www.goetas.com