我正在Symfony
使用 1.31 开发 2.8 项目Twig
,我想Twig
通过创建扩展来添加自定义标签:
class AppExtension extends \Twig_Extension {
...
public function getTokenParsers() {
return array(new CustomTagTokenParser());
}
}
class CustomTagTokenParser extends \Twig_TokenParser {
...
public function parse(Twig_Token $token) {
return new CustomTagNode(...);
}
public function getTag() {
return `customtag`:
}
}
class CustomTagNode extends \Twig_Node {
...
}
现在我可以customtag
在我的模板中使用:
{# some Twig template #}
{% customtag %}
...some content...
{% endcustomtag %}
这一切都很好,我可以some content
在扩展中进行更改。但是,这是在渲染模板/加载页面时完成的。
由于some content
(以及由扩展创建的更新结果)是静态的,因此可以轻松缓存。
如何在构建缓存时而不是在每次页面加载时更新扩展程序/标签以仅运行一次?