TWIG - Wie überschreibe ich Block in Embed, aber in Kind-Template?

9

Also, ich habe 3 Vorlagen: 1. Widget mit einigen Parametern einbinden, 2. Globales Layout für jede Seite, 3. Einzelne Seite.

Ich möchte einen Block im Layout erstellen, der von Page überschrieben werden würde, aber wenn ich diesen Block in das Widget Einbetten einfügen möchte, funktioniert es nicht.

file: Widget/awesome.html.twig (Widget einbetten)

%Vor%

file: Layout/layout.html.twig

%Vor%

file: Portal/page.html.twig

%Vor%

Ist das irgendwie möglich?

    
123qwe 24.03.2015, 14:00
quelle

2 Antworten

15

Das kannst du nicht tun. Einbetten funktioniert wie include und extends, so dass Block I_WANT_TO_OVERRIDE_THIS tatsächlich in deiner 'erweiterten' awesome.html.twig 'ist. Seite erweitert layout.html.twig nicht um das Tolle, also gibt es keinen I_WANT_TO_OVERRIDE_THIS Block für page.html

Sie sollten dies ändern, um Platzhalter für Ihr Widget zu erhalten und diese auf der Ebene page.html.twig einzubetten.

Wenn Sie diesen Weg wirklich brauchen, können Sie es letztendlich so machen: In layout.html.twig:

%Vor%     
Greg 28.03.2015, 14:07
quelle
1

Die angenommene Antwort hat mir geholfen, einen ähnlichen Fall herauszufinden, in dem ich eine Einbettung in eine Einbettung verwende und ich in der Lage sein möchte, HTML in den Einbettungsblock für Kinder einzubetten.

Wenn Sie in users.html nachsehen, werde ich {% set footer %}{% endset %} verwenden, was mir erlaubt, den HTML-Code in den untergeordneten Block {% block footer %} zu übertragen.

users.html

%Vor%

user_widget.twig

%Vor%

user_info.twig

%Vor%     
ctown4life 29.07.2015 20:16
quelle

Tags und Links