2015-05-20 127 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