我正在創建一個控制面板應用程序,該應用程序具有一些基本包,其中包含一些基本功能和特定的包以實現高級和特定功能。將參數傳遞到另一個包中的視圖 - symfony2
例如,基本包處理用戶認證並保存所有模板資產,其他包添加功能以配置操作系統的不同部分。
我需要能夠將基礎包佈局中的菜單鏈接添加到其他每個包中。我更願意在每個捆綁配置中進行配置,這樣我就可以爲不同的客戶混合匹配功能。
我讀了所有關於編譯器通過,擴展和依賴注入沒有運氣。是否有正確的做法?
我正在創建一個控制面板應用程序,該應用程序具有一些基本包,其中包含一些基本功能和特定的包以實現高級和特定功能。將參數傳遞到另一個包中的視圖 - symfony2
例如,基本包處理用戶認證並保存所有模板資產,其他包添加功能以配置操作系統的不同部分。
我需要能夠將基礎包佈局中的菜單鏈接添加到其他每個包中。我更願意在每個捆綁配置中進行配置,這樣我就可以爲不同的客戶混合匹配功能。
我讀了所有關於編譯器通過,擴展和依賴注入沒有運氣。是否有正確的做法?
萬一有人有類似的問題,這是我如何實現這一點:
我創造了我的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 ]
如果您正在使用桂枝這應該做的伎倆......
{% render "DifferentBundle:ControllerName:functionalityName" with {'argument_name': 3} %}
你應該在你的DifferentBundle控制器functionalityNameAction
方法這個工作。
查看文檔中的Creating and using Templates - Embedding Controllers部分。
希望它有幫助。
問題是我不知道有多少捆綁需要插入鏈接菜單。我想要其他包來添加鏈接到基礎包。 – Menthas
我認爲這是不可能的。您需要將其他捆綁鏈接嵌入您的基本包中。 –