2015-07-12 56 views
2

有沒有方法可以覆蓋子模板中父模板內部定義的塊和embed標記:例如,我有三個模板:a,bca嵌入bc延伸atwig:覆蓋嵌入標記中定義的塊

{# a.html.twig #} 
{% embed b.html.twig %} 
    {% block content %} 
    laksjflkj 
    {% block placeholder %} 
    I want to override this template in c, it is actually defined here and has nothing to do with b 
    {% endblock placeholder %} 
    {% endblock content %} 
{% endembed %} 

{# b.html.twig #} 
{% block content %} 
    blahblah 
{% endblock %} 

{# c.html.twig #} 
{% extends 'a.html.twig' %} 
    {% block placeholder %} 
    let's override the block defined inside a 
    {% endblock placeholder %} 

如何重寫內c.html.twigplaceholder塊?

+0

要有提示,你可以看一下樹枝的編譯代碼(在上下文中的小鏈接) http://twigfiddle.com/jb63tv - 應該與繼承順序和範圍有關。我現在沒有時間看它,但無論如何這都是一個很好的問題。 –

回答

1

你必須創建一個名爲d.html.twig新的文件,它擴展c.html.twig和覆蓋你placeholder塊這樣的:

{# d.html.twig #} 
{% extends 'c.html.twig' %} 
    {% block placeholder %} 
    Overrided ! 
    {% endblock placeholder %} 
+0

這是一種有效的解決方法。 – user2268997

+0

不要忘記標記問題解決:) –

+0

我沒有。這是一個很好的解決方法,但它並沒有回答這個問題。 – user2268997