mmx/twig

MODX 3 的 Twig 模板引擎

1.0.2 2024-05-15 02:43 UTC

This package is auto-updated.

Last update: 2024-09-15 03:34:30 UTC


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以禁用缓存。