2016-07-13 10 views
1

Ich habe mehrere "Widgets", die ich in Symfony-Form verwende. Dies sind das Datumsauswahlfeld, das Farbauswahlfeld, der Fantasie-Kombinationsfeld und dergleichen. Ich halte die Vorlage für jeden in separatem Zweig Datei, etwa so:Hinzufügen neuer Blöcke zu Twig-Vorlage

# 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 

nun in der aktuellen Einstellung, die ich alle, dass die Blöcke in einer großen Vorlage halten soll. Aber ich möchte eine Schleife machen, um die definierten Blöcke aus diesen separaten Dateien aufzunehmen. Ich versuche im Wesentlichen diese Substitution:

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

mit etwas wie folgt aus:

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

Aber als Einsatz-Tag nicht Variablen unterstützen es nicht funktioniert.

Ich möchte einen solchen Ansatz, weil ich schöne Widget-Pakete haben möchte - Speichern an einer Stelle CSS, JS, Twig Vorlagen (eine für Formularelement und die andere für Element der Seite zeigt die Entitätsinformationen). Dann könnte ich diese Pakete in einer Konfigurationsdatei definieren und alles ordentlich einstellen und speichern.

Gibt es eine Möglichkeit, dies zu erreichen?

Antwort

0

Es ist nicht eine große Lösung, aber Sie können eine Datei enthalten, die für die einzelnen Widgets eine Verwendung Anweisung enthält:

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

es dann schließen, wie Sie wollten:

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

So das Widget. Pfad muss den Pfad der Datei 1 speichern.

Verwandte Themen