tigr / twig-preprocessor
这个非常简单的加载器在将twig文件加载到twig解析器之前提供了一个预解析的方法
3.0.0
2021-05-24 16:24 UTC
Requires
- php: >=7.0
- twig/twig: ^2.0|^3.0
Requires (Dev)
- phpunit/phpunit: ^5.7
- satooshi/php-coveralls: ~0.6
README
此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); } );