pug / twig

将Pug模板编译为Twig模板

1.2.0 2021-05-02 17:13 UTC

This package is auto-updated.

Last update: 2024-09-08 02:47:56 UTC


README

Latest Stable Version Build Status Test Coverage StyleCI

此包可以将基本Pug代码转换为Twig代码。请注意,不应使用此包在Symfony中处理Pug模板,正确的方法是使用pug-symfony,并仅使用polyfill Twig表达式或将表达式处理委托给Twig代码解析器。

此包可以帮助您将代码从Pug迁移到Twig,通过生成等效代码,或者可以用来创建Pug输入界面以在现有应用程序中插入Twig模板。您应该使用此包处理的只有这些类型的业务。

对于Symfony中的完整功能Pug模板引擎,您需要pug-symfony。如果您缺少某个功能,请提出问题,可能已经存在实现相同功能的方法,否则我们将尝试添加它。

安装

如果您尚未安装,请首先安装composer: https://getcomposer.org.cn/

然后运行以下命令

composer require pug/twig

或者如果您已本地安装了composer

php composer.phar require pug/twig

Phug/Pug-php的扩展,用于输出Twig(PHP pug到twig转换器)

my-pug-input.pug:

ul#users
  - for user in users
    li.user
      // comment
      = user.name
      | Email: #{user.email}
      a(href=user.url) Home page

index.php:

include 'vendor/autoload.php';

echo PugToTwig::convert(file_get_contents('my-pug-input.pug'));

将输出

<ul id="users">
  {% for user in users %}
    <li class="user">
      {#  comment #}
      {{ user.name | e }}
      Email: {{ user.email | e }}
      <a href="{{ user.url | e }}">Home page</a>
    </li>
  {% endfor %}
</ul>

(缩进不可保证)。

某些功能(如mixins)可能会输出PHP代码,您需要评估这些代码

$html = eval('?>' . PugToTwig::convert($pugCode));

警告:您应该确保不要让用户输入出现在<?php?>之间。这不太可能发生,因为表达式和代码被转换为PHP eval会忽略的Twig代码,但请小心。

不支持的功能

  • 具有动态名称的mixins
  • mixins参数:实际上,参数显示将变为Twig插值,而Twig无法处理pug mixins,因此mixins在Twig评估代码/表达式之前被评估。