Наследовать динамический шаблон в Phalcon Volt

Мне нужно загрузить страницу, которая будет «вставлена» в шаблон — как я прочитал, Вольт Наследование шаблонов должен сделать свое дело, и это делает … вроде. Жестко закодированные значения, как показано в примерах, работают нормально — работает следующий пример:

<!-- Template -->
<div id="site_content">
{% block test %}
{% endblock %}
</div>

и страница, которая наследует шаблон:

{% extends "../../templates/de/index.volt" %}

{% block test %}
{{ content() }} {# this is a registered volt function that outputs the generated content #}
{% endblock %}

Однако одной и той же странице может потребоваться наследовать другой шаблон, и это должно быть решено во время выполнения, поэтому имя шаблона должно генерироваться динамически. Два варианта произошли со мной:

  • Установите имя шаблона для переменной и используйте его при расширении — проблема здесь в том, что я не вижу способа использовать его впоследствии. Этот парень, похоже, имел ту же проблему, но нет ни ответа о том, как это сделать, ни подтверждения того, что это вообще невозможно.
  • Зарегистрируйте другую функцию для генерации полной строки (например, {% extends «../../templates/de/index.volt»%}) и затем скомпилируйте ее, например,

    $ От компилятора> AddFunction ( ‘get_template’,
    функция ($ resolvedArgs, $ exprArgs) use ($ volt) {
    вернуть $ volt-> getCompiler ()
    -> compileString (‘{% extends «../../templates/de/index.volt»%}’);
    });

а затем использовать эту функцию на странице, например,

{{ get_template() }}

{% block test %}
{{ content() }}
{% endblock %}

Однако использование этого подхода не анализирует содержимое страницы (например, содержимое, возвращаемое зарегистрированной функцией content (), не отображается). Я также открыт для других решений (использование Twig вместо Volt — только последнее средство, из-за проблем с производительностью), советов о том, что я делаю неправильно или указателей полезных статей на эту тему. Заранее спасибо!

0

Решение

Попробуйте использовать партиалы, как описано в документе Phalcon: Использование частичных

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]