@ n3xus hat eine nette Antwort gegeben, es hat mir auch wirklich geholfen (Danke), aber Sie können sich auch diese Seite aus der Dokumentation ansehen: Zweigdokumente
Ein besonders nettes Feature ist die Möglichkeit, einen Teil von text / html zu setzen:
%Vor%Macht es einfach, aus den untergeordneten Vorlagen sehr spezifische Inhalte zu generieren.
Wenn Sie den default()
-Filter nicht verwenden möchten (dh wenn Sie die Variable mehrfach in Ihren übergeordneten und untergeordneten Vorlagen verwenden möchten), können Sie tatsächlich einen Block definieren, der Ihre gesamte Seite im übergeordneten Element enthält Vorlage, und verschachteln Sie dann Ihre anderen Blöcke darin:
Sie können dann die Variable page
im Block page
in Ihrer untergeordneten Vorlage überschreiben, indem Sie den Wert und dann den Aufruf von parent()
:
Beachten Sie, dass wir in der übergeordneten Vorlage die Variable page
außerhalb des Blocks page
definieren, während wir in der untergeordneten Vorlage innerhalb des Blocks page
definieren.
Twig macht also folgendes:
child.twig
und setzt die Standardwerte für die Variable base.twig
. page
Block geht, wird page
diesen Block überschreiben. Daher wird stattdessen der child.twig
-Block in page
ausgeführt. child.twig
in page
werden die neuen Werte für die Variable child.twig
festgelegt. Es ruft dann page
auf, was besagt, dass es zurück zu parent()
geht und den übergeordneten base.twig
-Block rendert. page
definiert (in meinem Beispiel wird der Block child.twig
dargestellt). Siehe ein funktionierendes Beispiel hier . Beachten Sie, dass dies komplizierter werden kann, wenn Sie mehrere Vererbungsschichten (z. B. Enkelvorlagen) hinzufügen.
Wenn Sie möchten, dass eine Variable einfach von einem Subtemplate "überschreibbar" ist, können Sie Ihre Variable wie folgt im übergeordneten Element festlegen:
%Vor%So könnten Sie eine Situation wie diese einrichten ...
base.twig
%Vor%parent.twig
%Vor%child.twig
%Vor%Das Endergebnis lautet:
%Vor%Ich denke, das funktioniert in den meisten Situationen gut. Anstatt zu erzwingen, dass die Parent-Variable vom Child überschrieben wird, lässt die Parent-Variable die Variable von Children überschreiben. Sie können auch ein anderes Verhalten im übergeordneten Element definieren, z. B. Verkettung statt Überschreiben.
Tags und Links scope variables templates twig variable-assignment