Mam więc 3 szablony: 1. Osadź widget z kilkoma parametrami, 2. Globalny układ dla każdej strony, 3. Pojedyncza strona.TWIG - Jak przesłonić blok wewnątrz osadzania, ale w szablonie podrzędnym?
Chcę utworzyć blok w układzie, który byłby nadpisany przez stronę, ale gdy chcę umieścić ten blok wewnątrz widgetu Umieść, to nie działa.
file: Widget/awesome.html.twig
(widget HTML)
<div id="{{id|default('awesomeWidget')}}">
{% block widget_body %}
{% endblock %}
</div>
file: Layout/layout.html.twig
{% block layout_body %}
{% embed 'AcmeFoobarBundle:Widget:awesome.html.twig' with
{'id':'myAwesomeWidget'} only %}
{% block widget_body %}
{% block I_WANT_TO_OVERRIDE_THIS %}
{% endblock %}
{% endblock %}
{% endembed %}
{% endblock %}
file: Portal/page.html.twig
{% extends 'AcmeFoobarBundle:Layout:layout.html.twig' %}
{% block I_WANT_TO_OVERRIDE_THIS %}
Hello World
{% endblock %}
Czy to możliwe, aby zrobić jakoś ten pomysł?
Jesteś geniuszem! – user3383675
Czy to "overrideWidgetPart: overrideWidgetPart" naprawdę działa? Zastosowałem to do podobnego problemu i usunąłem tę część, i to działa. Dzięki :) – Diguin
@Diguin nie ma dla nich potrzeby w tym fragmencie pod względem końcowego wyniku, ale chodzi o ograniczenie niepożądanych zmiennych do pojawienia się w szablonie. Weź pod uwagę, że masz wiele różnych zmiennych na zewnątrz. Raczej uniemożliwisz im dotarcie do twojego szablonu, aby uniknąć kolizji nazw i uprościć debugowanie. Używanie 'with {...} only' jest zawsze dobrą praktyką. – ivkremer