wol-soft / twig-include-dir
包含目录内的所有twig模板
2.1.0
2020-12-18 10:50 UTC
Requires
- php: >= 7.2
- twig/twig: >= 2.7 < 4.0
Requires (Dev)
- phpunit/phpunit: ^7.0 || ^8.0 || ^9.0
This package is auto-updated.
Last update: 2024-08-29 14:52:43 UTC
README
twig-include-dir
包含目录内的所有twig模板
特性
- 提供包含多个.twig模板的目录,所有模板都将被包含
- 添加 recursive 关键字以递归地包含目录内的所有模板
- 与 include 相同,使用关键字 only 和 with 进行已知的变量处理
要求
- 需要 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 所知,你可以使用关键字 with 和 only 控制可用的变量(比较:include)
<div class="modal-container"> {# only the foo variable will be accessible #} {% includeDir '/modals' recursive with {'foo': 'bar'} only %} </div>