誰かが同様の問題を抱えている場合に備えて、これをどのように達成したかを次に示します。
__get 、 __set 、 __isset 、および __unset マジック メソッドを実装し、追加の追加メソッドを持つ BaseBundle にサービスを作成しました。クラス内の静的変数に変数を格納します。次に、すべてのバンドルにリスナーを追加しました。
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');
}
}
これは、バンドルの 1 つに対する私の 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 ]