2013-01-15 92 views
4

是否有可能創建多個枝條延伸?因爲當我添加第二個擴展時,我收到第一個擴展方法不存在的錯誤消息。Symfony2的多枝杈擴展

這裏是我的分機是如何在services.xml中定義:

<service id="acme.extension.view_helper" class="FLS\AcmeBundle\Extension\ViewHelperExtension"> 
     <argument type="service" id="doctrine.orm.entity_manager" /> 
     <tag name="twig.extension" /> 
</service> 

<service id="acme.extension.stats_helper" class="FLS\AcmeBundle\Extension\StatsExtension"> 
     <argument type="service" id="doctrine.orm.entity_manager" /> 
     <tag name="twig.extension" /> 
</service> 

這裏是錯誤消息:

Fatal error: Call to undefined method FLS\AcmeBundle\Extension\StatsExtension::findTask() in F:\www\AcmeBundle\app\cache\dev\twig\fe\fd\4ff31bf8efd0669b6d0b2a14ba11.php on line 232

的findTask方法在ViewHelperExtension定義。

在此先感謝!

+0

你可以分享你的ViewHelperExtension和StatsExtension代碼請 – Luke

+0

在這裏遇到同樣的問題。服務定義是好的。似乎是一種奇怪的行爲:在定義兩個服務擴展時,只有最後定義的一個可用。這個問題可能與Twig –

+0

有關我有同樣的問題,但只有當servises在同一個包中 – Fabien

回答

0

我在項目中使用一些樹枝擴展,一切正常。你的services.xml包含服務標籤? <services> // Services definition </services> 看起來像第一個服務覆蓋。

文章How to write a custom Twig Extension

+0

奇怪的是,我在services.xml文件中所做的所有事情都是爲了移動我的服務定義的順序。例如,我在我的擴展的兩個定義之間插入了FormHandler的另一個服務定義,並且覆蓋問題消失了。 – Frank6

0

編輯:TL; DR。是。這是可能

我只是有這個問題現在。就我而言,原因是我從兩個擴展名開始都使用了相同的樣板文件,並且每個函數中的getName()函數都返回了相同的名稱。

有一次,我改變了功能上的每個擴展添加兩個擴展返回名稱。我認爲像下面將工作:

的src /的appbundle /嫩枝/ AppBundleFooExtension.php

/* ... */ 
public function getName() 
{ 
    return 'appbundle_foo_extension'; 
} 
/* ... */ 

的src /的appbundle /嫩枝/ AppBundleBarExtension.php

/* ... */ 
public function getName() 
{ 
    return 'appbundle_bar_extension'; 
} 
/* ... */