wol-soft/twig-include-dir

包含目录内的所有twig模板

2.1.0 2020-12-18 10:50 UTC

This package is auto-updated.

Last update: 2024-08-29 14:52:43 UTC


README

Latest Version Minimum PHP Version Build Status Coverage Status MIT License

twig-include-dir

包含目录内的所有twig模板

特性

  • 提供包含多个.twig模板的目录,所有模板都将被包含
  • 添加 recursive 关键字以递归地包含目录内的所有模板
  • include 相同,使用关键字 onlywith 进行已知的变量处理

要求

  • 需要 Twig >= 2.7
  • 需要 PHP >= 7.2

安装

推荐通过 Composer 安装 twig-include-dir

$ composer require wol-soft/twig-include-dir

为什么?

一个示例用例可以是:你使用bootstrap设置了一个网站,有许多模态框。现在你不需要将所有模态框放在一个文件中,或者手动包含每个模态框,而是可以使用一个文件来分离每个模态框。将所有模态框放入模态目录中,然后简单地包含整个目录。添加新的模态框?没问题,只需在你的模态目录中创建一个新的模板文件。

入门

要使用 twig-include-dir,首先需要将 include-dir 标记解析器添加到你的 Twig 环境中

<?php

/* ... */

$loader = new FilesystemLoader(__DIR__ . DIRECTORY_SEPARATOR);
$twig = new Environment($loader);
$twig->addTokenParser(new \TwigIncludeDir\IncludeDirTokenParser());

/* ... */

之后,你可以在模板中使用添加的标记 includeDir

<div class="modal-container">
    {% includeDir '/modals' %}
</div>

目录中的文件将按字母顺序包含。

递归使用

要递归地包含给定目录内的所有文件,只需在包含语句中添加关键字 recursive

<div class="modal-container">
    {% includeDir '/modals' recursive %}
</div>

现在也将包含来自目录 /modals/user/modals/system 等的模态。

注意: 模板也将按字母顺序包含,包括目录。因此,模板 /modals/footer.twig 将在目录 /modals/system 中的模板之前包含,然后是 /modals/user,然后是可能的 /modals/zebraHeader.twig。建议只为不要求特定顺序的模板使用 twig-include-dir。

变量

如Twig核心中的 include 所知,你可以使用关键字 withonly 控制可用的变量(比较:include

<div class="modal-container">
    {# only the foo variable will be accessible #}
    {% includeDir '/modals' recursive with {'foo': 'bar'} only %}
</div>