2016-07-13 3 views
1

У меня есть несколько «виджетов», которые я использую в форме Symfony. Это поле datepicker, поле colorpicker, поле для фантазии и тому подобное. Я держу шаблон для каждого из них в отдельном файле Twig, например, так:Добавление новых блоков в шаблон Twig

# start of color_widget.html.twig 
{% block color_widget %} 
<div id="{{ id }}" class="input-group colorpicker-component"> 
    <span class="input-group-addon"><i></i></span> 
    <input type="text" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %} class="form-control" /> 
</div> 
<script> 
    $(function() { 
     $('#{{ id }}').colorpicker(); 
    }); 
</script> 
{% endblock %} 
# end of color_widget.html.twig 

Теперь, в текущей обстановке я должен держать все, что блоки в один большой шаблон. Но я хотел бы сделать цикл для включения определенных блоков из этих отдельных файлов. В сущности, я пытаюсь подставляя:

{% use "@CoreWidgets/color/widget.html.twig" %} 
{% use "@CoreWidgets/date_picker/widget.html.twig" %} 
{% use "@OtherWidget/widget.html.twig" %} 

с чем-то вроде этого:

{% for widget in _widgets %} 
    {% use widget.path %} 
{% endfor %} 

Но использование тега не поддерживает переменные не работает.

Мне нужен такой подход, потому что я хотел бы иметь красивые пакеты виджета - хранить в одном месте CSS, JS, Twig шаблоны (один для элемента формы, а другой для элемента страницы, отображающий информацию о сущности). Тогда я мог бы определить, что пакеты в файле конфигурации и все они аккуратно установлены и сохранены.

Есть ли способ сделать это?

ответ

0

Это не большое решение, но вы можете включить файл, который содержит использование утверждение для каждого из виджетов:

{# file 1 : file that calls the use tag : #} 
{% use "@CoreWidgets/color/widget.html.twig" %} 

Затем включите его так, как вы хотели:

{# file 2 : file that include it : #} 
{% for widget in _widgets %} 
    {% include widget.path %} 
{% endfor %} 

So виджета. путь должен хранить путь к файлу 1.