Я работаю над проектом Symfony
2.8 с использованием Twig
1.31, и я хотел бы добавить специальный тег для 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
(а также обновленный результат, созданный расширением) является статическим, это можно легко кэшировать.
Как обновить расширение/тег для запуска только один раз при создании кеша, а не при загрузке каждой страницы?