4

是否可以创建多个 Twig 扩展?因为当我添加第二个时,我收到第一个扩展方法在第二个扩展中不存在的错误消息。

这是我的扩展在 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>

这是错误消息:

致命错误:在第 232 行调用 F:\www\AcmeBundle\app\cache\dev\twig\fe\fd\4ff31bf8efd0669b6d0b2a14ba11.php 中的未定义方法 FLS\AcmeBundle\Extension\StatsExtension::findTask()

findTask 方法在 ViewHelperExtension 中定义。

提前致谢!

4

2 回答 2

1

编辑:TL;DR。是的。有可能的

我现在刚遇到这个问题。就我而言,这样做的原因是我从两个扩展的相同样板开始,并且getName()每个扩展中的函数都返回相同的名称。

一旦我更改了函数在每个扩展上返回的名称,两个扩展都被添加了。我假设以下内容会起作用:

src/AppBundle/Twig/AppBundleFooExtension.php

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

src/AppBundle/Twig/AppBundleBarExtension.php

/* ... */
public function getName()
{
    return 'appbundle_bar_extension';
}
/* ... */
于 2017-02-09T18:50:15.587 回答
0

我在我的项目中使用了几个树枝扩展,一切都很好。您的 services.xml 包含服务标签? <services> // Services definition </services> 看起来像第二个服务覆盖第一。

文章如何编写自定义 Twig 扩展

于 2013-01-15T05:21:46.517 回答