2015-05-20 100 views
1

我想显示我的捆绑菜单,但我只需要显示活动的捆绑,我怎样才能获得活动的捆绑树枝?Symfony2的主动捆绑

感谢和问候!

回答

1

包的列表存储在内核中。

你必须创建一个树枝延伸BundleExtension并通过内核的依赖:

<?php 

namespace MyBundle\Twig\Extension; 

use Symfony\Component\HttpKernel\KernelInterface; 

class BundleExtension extends \Twig_Extension 
{ 

    protected $kernel; 

    public function __construct(KernelInterface $kernel) 
    { 
     $this->kernel = $kernel; 
    } 

    /** 
    * {@inheritdoc} 
    * @see Twig_Extension::getFunctions() 
    */ 
    public function getFunctions() 
    { 
     return array(
      'getBundles' => new \Twig_SimpleFunction('getBundles', array($this, 'getBundles')), 
     ); 
    } 

    public function getBundles() 
    { 
     return $this->kernel->getBundles(); 
    } 

    /** 
    * {@inheritdoc} 
    * @see Twig_ExtensionInterface::getName() 
    */ 
    public function getName() 
    { 
     return 'get_bundles'; 
    } 
} 

其注册为一个服务:

services: 
    bundle_extension: 
     class: MyBundle\Twig\Extension\BundleExtension 
     arguments: ['@kernel'] 
     tags: 
      - { name: twig.extension }  
在树枝模板

现在:

{% set bundles = getBundles() %} 
{% for bundle in bundles %} 
    {{ bundle.getName()}}<br/> 
{% endfor %} 
+0

谢谢你,医学,它工作出色。 – LuzEterna

+1

仅供参考:'{{bundle.name}}'和'{{bundle.getName()}}'一样。 – qooplmao