rareloop/primer-template-engine-twig

Primer 的 Twig 模板引擎,而非默认的 (Handlebars)

v4.0.0 2018-08-03 08:37 UTC

This package is auto-updated.

Last update: 2024-09-12 04:26:33 UTC


README

CI

这是一个为 Primer 定制的模板引擎,它使用 Twig 而不是默认的 (Handlebars)。

安装

  1. 在您的 Primer 安装中的 composer.json 文件中,将以下内容替换为

    "rareloop/primer-template-engine-handlebars": "dev-master"

    然后

    "rareloop/primer-template-engine-twig": "1.0.*"
  2. 运行 composer update

  3. 修改您的 bootstrap/start.php 文件,并将 Primer::start 调用改为包括 templateClass,例如:

    $primer = Primer::start(array(
        'basePath' => __DIR__.'/..', 
        'templateClass' => Rareloop\Primer\TemplateEngine\Twig\Template::class,
    ));
  4. 将您模式或视图中的所有 .hbs 文件替换为 `.twig` 文件。如果您不希望手动进行此操作,可以从 此处 下载基础 Primer 文件( Twig 格式)。

使用方法

相互包含模式

任何模式都可以通过使用标准 include 语法包含在其他模式中,例如:

<div class="sub-pattern">
    {% include 'elements/forms/input' %}
</div>

有关使用 {% include %} 和操作传入上下文的信息,请参阅 Twig 网站

扩展模板

默认情况下,Primer 将所有页面模板包裹在通用的视图( views/template.twig)中。当使用 {% extends %} 时,这种包裹有时是不希望的,在这种情况下,您可以通过几种方式禁用此行为。

  1. 在单个页面模板上。将以下内容添加到模板的 data.json 文件中:

    {
        "primer": {
            "view": "custom-view"
        }
    }
    
  2. 全局。将 wrapTemplate: false 添加到 bootstrap/start.php 中的 Primer::start 调用中,例如:

    $primer = Primer::start([
        'basePath' => __DIR__.'/..',
    
        'templateClass' => TwigTemplateEngine::class,
        'wrapTemplate' => false,
    ]);

Twig 模板缓存

默认情况下,Primer 使用项目根目录中的名为 cache 的目录来存储缓存文件。要将其更改为其他位置,您可以在 bootstrap/start.php 中设置一个替代项,例如:

$primer = Primer::start(array(
    'basePath' => __DIR__.'/..', 
    'cachePath' => 'absolute/path/to/cache/dir',
    'templateClass' => Rareloop\Primer\TemplateEngine\Twig\Template::class,
));

自定义事件

大多数 Primer 事件仍然可用,此包还添加了一些特定于引擎的事件

  • Twig 引擎初始化

    当创建 Twig 引擎时调用。这对于向 Twig 引擎注册自定义助手很有用。

    Event::listen('twig.init', function ($twig) {
    
    });