2016-07-13 2 views
1

Symfony 양식에서 사용하는 여러 "위젯"이 있습니다. 이들은 datepicker 필드, colorpicker 필드, 멋진 콤보 상자 등입니다. 그래서 같이 별도의 나뭇 가지 파일 각각에 대해 템플릿을 유지 :새 블록을 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, 나뭇 가지 템플릿 (폼 요소 하나와 엔티티 정보를 보여주는 페이지 요소 중 하나)에 저장하는 것이 좋다. 그런 다음 설정 파일에 패키지를 정의하고 모두 깔끔하게 설정하고 저장할 수 있습니다.

이 작업을 수행 할 수있는 방법이 있습니까?

답변

0

그것은 훌륭한 솔루션 아니지만 각 위젯에 대한 사용 문이 포함 된 파일을 포함 할 수 있습니다 : 그래서

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

위젯 :

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

그런 다음 그것을 당신이 원하는 방법을 포함한다. 경로는 파일 1의 경로를 저장해야합니다.

관련 문제