2012-10-15 75 views
1

我正在創建一個控制面板應用程序,該應用程序具有一些基本包,其中包含一些基本功能和特定的包以實現高級和特定功能。將參數傳遞到另一個包中的視圖 - symfony2

例如,基本包處理用戶認證並保存所有模板資產,其他包添加功能以配置操作系統的不同部分。

我需要能夠將基礎包佈局中的菜單鏈接添加到其他每個包中。我更願意在每個捆綁配置中進行配置,這樣我就可以爲不同的客戶混合匹配功能。

我讀了所有關於編譯器通過,擴展和依賴注入沒有運氣。是否有正確的做法?

回答

0

萬一有人有類似的問題,這是我如何實現這一點:

我創造了我的BaseBundle一種服務,實現了__get,__set,__isset和__unset魔術方法和有一個額外的附加方法。它將變量存儲在類中的靜態變量中。 我加入監聽到我所有的軟件包:

namespace Mbs\OtherBundle\Listener; 

use Mbs\BaseBundle\Services\GlobalVars; 
use Symfony\Component\HttpKernel\Event\FilterControllerEvent; 

class ControllerListener 
{ 
    protected $_global_vars; 

    public function __construct(GlobalVars $global_vars) 
    { 
     $this->_global_vars = $global_vars; 
    } 

    public function onKernelController(FilterControllerEvent $event) 
    { 
     $this->_global_vars->append('bundles', 'mbs.other'); 
    } 
} 

這是我的包之一services.yml。 GlobalVars是我之前提到的類。

services: 
    mbs.base_controller_listener: 
     class: Mbs\OtherBundle\Listener\ControllerListener 
     tags: 
      - { name: kernel.event_listener, event: kernel.controller, method: onKernelController } 
     arguments: [ @mbs.global_vars ] 
0

如果您正在使用桂枝這應該做的伎倆......

{% render "DifferentBundle:ControllerName:functionalityName" with {'argument_name': 3} %} 

你應該在你的DifferentBundle控制器functionalityNameAction方法這個工作。

查看文檔中的Creating and using Templates - Embedding Controllers部分。

希望它有幫助。

+0

問題是我不知道有多少捆綁需要插入鏈接菜單。我想要其他包來添加鏈接到基礎包。 – Menthas

+0

我認爲這是不可能的。您需要將其他捆綁鏈接嵌入您的基本包中。 –

相關問題