Мне нужно загрузить страницу, которая будет «вставлена» в шаблон — как я прочитал, Вольт Наследование шаблонов должен сделать свое дело, и это делает … вроде. Жестко закодированные значения, как показано в примерах, работают нормально — работает следующий пример:
<!-- 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 — только последнее средство, из-за проблем с производительностью), советов о том, что я делаю неправильно или указателей полезных статей на эту тему. Заранее спасибо!
Попробуйте использовать партиалы, как описано в документе Phalcon: Использование частичных
Других решений пока нет …