2014-11-06 36 views
0

是否可以輕鬆更改(或提供別名)到Twig中的內置標籤名稱?例如,我希望能夠在我的模板中使用單詞slot而不是block(例如,{% slot mypage %}{% endslot %}而不是{% block mypage %}{% endblock %})。樹枝:更改或別名內置標籤名稱?

本頁面:http://twig.sensiolabs.org/doc/recipes.html#customizing-the-syntax ......展示瞭如何輕鬆地更改標籤標記({%%}),但我想改變實際變量。這可能嗎?

+0

爲什麼不只是用'block'去? – DarkBee 2014-11-06 07:35:46

+0

@DarkBee,我正在建立一個已經使用「block」這個詞來表示別的東西的系統,如果術語「block」意味着兩個不同的東西,我認爲它會給需要使用樹枝模板的人造成困惑。當然,我可以將自己的「阻止」用法改爲別的東西,但它對於域是非常有意義的,而枝條模板意義上的術語「阻止」對我來說似乎相當隨意,我認爲它實際上會使它們的目的更清楚地稱之爲「槽」或「佔位符」等其他內容。 – 2014-11-06 18:02:07

回答

1

我沒有測試它,但是您應該定義自定義tag,它們擴展Twig_TokenParser_Block並覆蓋方法decideBlockEndgetTag

public function decideBlockEnd(Twig_Token $token) 
{ 
    return $token->test('endslot'); 
} 

public function getTag() 
{ 
    return 'slot'; 
} 

也許定製Twig_Node型也是必要的。

之後,您需要創建並註冊twig extension