tigr/twig-preprocessor

这个非常简单的加载器在将twig文件加载到twig解析器之前提供了一个预解析的方法

3.0.0 2021-05-24 16:24 UTC

This package is auto-updated.

Last update: 2024-09-19 17:27:41 UTC


README

Build Status For Twig version Minimum PHP Version Packagist GitHub tag (latest SemVer) GitHub

此Twig预处理器加载器允许您在将模板传递给twig解析器之前对其进行自定义操作。这允许您进行一些替换,或者格式化模板以使其看起来更好。

此分支(master)包含Twig 2.x的代码。

安装

通过composer安装(适用于Twig 2的版本)

composer require tigr/twig-preprocessor

如果您想使用它与twig 1一起使用,请使用版本1

composer require tigr/twig-preprocessor "~1.0"

使用方法

在一般使用中,您将传递实际的模板加载器给Twig预处理器加载器,并传递一个将被调用来与twig模板代码混合的回调。所以,一般的使用方法是这样的

$realLoader = Twig_Loader_Filesystem('/path/to/templates');
$loader = Twig_Loader_Preprocessor(
    $realLoader, 
    function($twigSource) {
        // do something with $twigSource
        
        return $twigSource;
    }
);

$twig = new Twig_Environment($loader);

编写此代码的主要原因是为了使Twig输出的代码更美观。您可以在此Twig问题中了解更多信息

简而言之,想法是在任何(好吧,大多数)twig控制结构之前删除所有空格/制表符。以下是您如何实现这一点的示例

$loader = new Twig_Loader_Preprocessor(
    $realLoader,
    function ($template) {
        static $regExp;
        // the RE isn't perfect, it won't match structures having curly braces within, 
        // but it's okay for me.
        if (!isset($regExp)) {
            $regExp = str_replace(
                ['_',      '{',  '}'],
                ['[\t ]*', '\{', '\}'],
                '/^_({([#%])[^}]*[^-](?2)}|{%_block_\w*_%}{%_endblock_%})$/m'
            );
        }
        
        return preg_replace($regExp, '$1', $template);
    }
);

历史