2016-07-29 5 views
1

Ich versuche die Syntax {% usage%} zu verwenden, um die Blöcke aus einer untergeordneten Vorlage in meiner Basisvorlage zu importieren, wie in http://twig.sensiolabs.org/doc/tags/use.html beschrieben, aber ich habe einige Probleme, also frage ich mich, was ich vermisse.Wie funktioniert "{% usage%}" im Zweig mit symfony3?

Ich habe folgende Dateien

#base.html.twig 
<!DOCTYPE html> 
<html> 
    {% use ':admin/page:body.html.twig' %} 
</html> 

#admin/page/body.html.twig 
{% block contentBody %} 
    <body> 
     <p>Test Body</p> 
    </body> 
{% endblock %} 

und schließlich

#default/index.html.twig 
{% extends base.html.twig %} 

{% block contentBody %} 
    <body> 
     <p>Test ContentBody</p> 
    </body> 
{% endblock %} 

Wie ich es nach der Dokumentation die ersten beiden Dateien sind fast verstehen, als ob ich eine erklärt

#base.html.twig 
<!DOCTYPE html> 
<html> 
{% block contentBody %} 
    <body> 
     <p>Test Body</p> 
    </body> 
{% endblock %} 
</html> 

Mein Controller macht default/index.html.twig

die ersten 3 Dateien Verwendung zusammen eine leere Seite ergibt, obwohl ich denke, es wäre sollte „Test ContentBody“

machen Wenn ich die base.html ersetzen. Zweig Inhalt mit dem letzten Schnipsel sollte es funktioniert, wie es und macht „Test ContentBody“

Wenn ich den Gebrauch Befehl ersetzen sind sie als „Test Body“

Wenn jemand mir erklären könnte, erwartet ergibt, was ich m falsch machen oder mich in der r steuern In welcher Richtung ich in der Dokumentation vermisse, würde ich sehr schätzen. Vielen Dank im Voraus

PS: Ich habe auch versucht, nur um den Block in admin/Seite/body.html.twig wie dieser es

#admin/page/body.html.twig 
{% block contentBody %}{% endblock %} 

falls zu erklären bricht wegen des Teils in der Dokumentation das sagt, wenn Sie Vorlagen verwenden, sollten sie keinen Körper haben, aber es hat nicht geholfen.

Antwort

1

Importieren von Blöcken mit use nicht ausgibt sie automatisch, so dass Sie immer noch sie in Ihrer Basisvorlage definieren müssen:

#base.html.twig 
<!DOCTYPE html> 
<html> 
    {% use ':admin/page:body.html.twig' %} 
    {% block contentBody %} 
     parent() 
    {% endblock %} 
</html> 

die use vor allem für die Wiederverwendung von Blöcken mit der block() Funktion vorgesehen ist.

+0

Nach ein paar Stunden des Kämpfens kam ich gerade dazu, es auch selbst zu erkennen, und was Sie sagten, arbeitet für mich. Danke für die Antwort, ich werde es als gelöst markieren. Würde es Ihnen etwas ausmachen, zu erklären, was Sie meinen, wenn Sie sie mit der Blockfunktion wiederverwenden? – gabtzi

+0

macht mir nichts aus Ich habe es herausgefunden. Sie können einfach {% use ...%} aufrufen und später {{block ('contentBody')}} – gabtzi