mmx / twig
MODX 3 的 Twig 模板引擎
Requires
- php: >=7.4
- ext-json: *
- mmx/database: ^1.1
- robmorgan/phinx: ^0.13
- twig/twig: ^v3.10
Requires (Dev)
- modx/revolution: ^v3.0
README
此扩展是 MMX 创新计划的一部分 - Modern MODX X 方法。
准备
此包只能通过 Composer 安装。
如果您尚未在 MODX 3 中使用 Composer,请下载您版本的 composer.json
cd /to/modx/root/
wget https://raw.githubusercontent.com/modxcms/revolution/v3.0.5-pl/composer.json
然后运行 composer update --no-dev
,您就可以准备安装 mmx 包了。
安装
composer require mmx/twig --update-no-dev --with-all-dependencies
composer exec mmx-twig install
移除
composer exec mmx-twig remove
composer remove mmx/twig
如何使用
您可以在任何片段中获取和配置 Twig 实例。
例如,片段 Test
$tpl = $modx->getOption('tpl', $scriptProperties); $var = $modx->getOption('var', $scriptProperties); if ($service = $modx->services->get('mmxTwig')) { $service->addFilter( new \Twig\TwigFilter('hello', static function($var) { return $var . ' World!'; } )); return $service->render($tpl, ['var' => $var]); } return '';
块 Test
{{ var | hello }}
以及 MODX 对片段的调用
[[!Test?tpl=`test`&var=`Hello`]]
您将得到 Hello World!
。
如果您将此包用作依赖项,您可以在类内部加载和配置实例,并通过所有片段共享以使用相同的设置和修改器。
模板加载器
默认情况下,您有 3 个模板加载器
- MODX 块(默认,无前缀 - 只需指定 id 或名称)
- MODX 模板(模板:1,或模板:BaseTemplate)
- 文件(文件:name.tpl)
如果 MODX 元素具有静态文件,它将首先使用,而不检查数据库中元素的内容。
文件加载器是 Twig 的本地功能,它完全不连接到数据库。使用它以获得最佳的 Twig 体验。
系统设置
所有设置都以前缀 mmx-twig.
开头。
elements-path
文件提供程序的根目录。
如果它不存在或不可读,提供程序将禁用,您将在 MODX 日志中获得 INFO 记录。
默认情况下,它是非存在的 core/elements
目录。
options
使用 JSON 编码的字符串,带有用于覆盖 Twig 实例默认值的选项。例如
{"strict_variables": true}
有关更多信息,请参阅 Twig 文档。
默认设置是
{ "auto_reload": true, "strict_variables": false, "autoescape": false, "optimizations": -1 }
use-modx
您可以使用 {{ modx }}
全局变量启用模板中对 MODX 实例的潜在 危险 使用。
这将允许您访问 MODX 中的所有内容,包括删除资源、元素和目录!
Current id of MODX resource is: {{ modx.resource.id }}
过滤器
请随意使用所有 标准 Twig 过滤器。
还有 3 个额外的过滤器
print
- 打印转义变量,{{ var | print }}
dump
- 转储转义变量,{{ var | dump }}
esc
- 转义变量中的 MODX 标签,{{ var | esc }}
全局变量
您可以在模板中访问系统全局变量
env
以访问$_ENV
get
以访问$_GET
post
以访问$_POST
files
以访问$_FILES
cookie
以访问$_COOKIE
server
以访问$_SERVER
session
以访问$_SESSION
request
以访问$_REQUEST
例如 {{ server | print }}
数据库表
此扩展使用 2 个额外的数据库表来存储 MODX 块和模板的更新时间,因为它们默认没有这些数据。
mmx_twig_chunks_time
mmx_twig_templates_time
此外,还有一个用于跟踪迁移的额外表
mmx_twig_migrations
缓存
启用缓存时,您将在 core/cache/mmx-twig
目录中获得编译后的模板。
在您清除MODX缓存时,此目录将被删除。
您无法使用系统设置更改此目录,但可以将值设置为false
以禁用缓存。