Setzen Sie die variable im übergeordneten Bereich in Twig
In Smarty können Sie tun
{$var = 'bla' scope=parent}
Ist es möglich, in Twig?
Nicht empfehlen, Blöcke zu benutzen. Ich weiß. Ich brauche Variablen.
- Hast du eine Lösung finden, die für diese noch?
- NÖ...........
Du musst angemeldet sein, um einen Kommentar abzugeben.
Basis.Zweig
Kind.Zweig
set title
vor der<title>
- tag ausgegeben wird, wie Sie schon oben. Gibt es eine Lösung, wo dietitle
variable nachdem die<title>
- tag in der Vorlage?Wenn Sie nicht wollen, verwenden Sie die
default()
filter (d.h., wenn Sie wollen, verwenden Sie die variable mehrere Male im Laufe Ihres parent-und child-Vorlagen), können Sie tatsächlich definieren Sie einen block mit Ihrem gesamten Seite in der übergeordneten Vorlage, und dann nest Ihr andere Blöcke, die im inneren des:Können Sie überschreiben dann die
page
variable in derpage
block in Ihrer Kind-Vorlage, indem Sie den Wert und dann aufrufenparent()
:Beachten Sie, dass in der übergeordneten Vorlage, definieren wir die
page
variable außerhalb derpage
Blocks, während in der child-template definieren wir es innen diepage
block.So, Zweig, tun Sie den folgenden:
child.twig
, wird es beginnen, von der Spitze desbase.twig
Einstellung der default-Werte für diepage
variable.page
block, Sie werden sehen, dasschild.twig
überschreibt, block. So, es läuft diepage
block inchild.twig
statt.page
block inchild.twig
ist, setzt die neuen Werte für diepage
variable. Es wird dann rufen Sieparent()
, die sagt, Sie gehen zurück zubase.twig
und machen das übergeordnetepage
block.child.twig
(in meinem Beispiel, machen wird es diecontent
block).Finden Sie ein Beispiel hier. Sie sich bewusst sein, dass dies komplizierter werden, wenn Sie beginnen, hinzufügen von mehreren Schichten der Vererbung (z.B. Enkelkind Vorlagen).
{% set page = page | default({}) | merge({
scheint zu sein, genau das, was ich lernen musste.@n3xus gab eine nette Antwort, es tatsächlich mir auch geholfen (danke), aber Sie können auch nehmen einen Blick auf diese Seite aus der Dokumentation: Zweig docs
Ein besonders nettes feature ist die Fähigkeit, einen Stück text/html:
Macht es einfach zu generieren, die sehr spezifische bits der Inhalte aus den untergeordneten Vorlagen.
Wenn Sie wollen einfach nur eine variable 'overridable' von einem subtemplate Sie können Ihre Variablen in der Eltern-wie so:
So könnte man die Einrichtung einer situation wie dieser...
Basis.Zweig
Eltern.Zweig
Kind.Zweig
Das Ergebnis am Ende:
Ich denke, das funktioniert gut für die meisten Situationen. Anstatt zwingen Sie die Eltern-var überschrieben werden, indem das Kind, die Eltern 'können' die variable überschrieben werden, indem Kinder. Das könnte man auch anders definieren Verhalten in der Eltern-wie Verkettung, anstatt überschreiben.
Können Sie die folgenden in Ihrem Kind Seiten:
Eine große Weise, etwas zu tun, wie ich gerade entdeckt:
Eltern.Zweig
Kind.Zweig
wenn Ihr Kind keine Vorlage definieren Sie den block
subvar
die variable inparent.twig
leer.Einen anderen Ansatz, um zu sehen, Zweig-Konfiguration Global in der Anwendung. Zum Beispiel in Silex:
Kann dann auf die variable in allen templates:
Verwenden set - tag mit einbetten
Beispiel:
Eltern.Zweig:
Kind.Zweig: