2015-05-15 1 views
0

Мне нужно загрузить страницу, которая будет «вставлена» в шаблон - как я ее прочитал, Volt's Template Inheritance должен сделать трюк, и он ... kinda. Жестко запрограммированные значения, как показано в примерах, работают отлично - следующий пример работы:Наследовать динамический шаблон в воле Falcon

<!-- 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 %} 

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

  • Задайте имя шаблона переменной и используйте его при расширении - проблема в том, что я не вижу способа использовать его впоследствии. That guy seems to have had the same problem, но нет ответа, как это сделать, ни подтверждения, что это невозможно вообще.
  • Зарегистрируйте еще одну функцию для создания полной строки (например, {% extends "../../templates/de/index.volt"%}), а затем скомпилируйте ее, например.

    $ от компилятора> AddFunction ('get_template', функции ($ resolvedArgs, $ exprArgs) использовать ($ вольта) { возвращение $ вольт-> getCompiler() -> compileString ('{% распространяется».. /../templates/de/index.volt "%} '); });

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

{{ get_template() }} 

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

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

ответ

0

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

Смежные вопросы