Wou*_*r J 5 symfony twig knpmenubundle
在我的Symfony2包中,我需要检查是否定义了一个函数(扩展名).更具体地说,如果安装了KnpMenuBundle,我在我的包中使用那个,否则我将自己渲染插件.
我尝试了这个,但这当然不起作用:
{% if knp_menu_render() is defined %}
{# do something #}
{% else %}
{# do something else #}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
是否有测试/功能/过滤器来检查功能是否已定义?如果没有,是否有另一种方法来检查应用程序中是否安装了KnpMenuBundle?
在Twig 扩展中编写一个函数来检查捆绑包是否已启用。
已注册捆绑包的列表存储在kernel.bundles参数中。
Twig 扩展被注册为服务。这意味着您可以将任何其他服务或参数传递给您的扩展:
<services>
<service id="acme.twig.acme_extension" class="Acme\DemoBundle\Twig\AcmeExtension">
<argument>%kernel.bundles%</argument>
<tag name="twig.extension" />
</service>
</services>
Run Code Online (Sandbox Code Playgroud)
在 Twig 函数或过滤器中,您稍后可以使用已传递给扩展的服务或参数。