symfony - Using a bundles class to extend a CoreBundle -
i need or rather advice.
i have core bundle general functionality , several additional bundles more specific functionality.
for example core bundle responsible rendering main menu application want other bundles able add menu items registering bundle. (in end menu items available menu items not active ones.)
i have solution not sure if one.
my corebundle contains corebundleinterface:
namespace corebundle; use corebundle\menu\menubuilder; interface corebundleinterface { public function getmenuitems(menubuilder $menuitem); }
so other bundle can implement interface:
namespace addressbundle; use corebundle\corebundleinterface; use corebundle\menu\menubuilder; use symfony\component\httpkernel\bundle\bundle; class addressbundle extends bundle implements corebundleinterface { public function getmenuitems(menubuilder $menubuilder) { $menubuilder->additem(['name' => 'addresses', 'label' => 'addresses']); } }
my corebundle has menubuilder class walks through registered bundles , calls interface methods:
namespace corebundle\menu; use corebundle\corebundleinterface; use symfony\component\dependencyinjection\containerinterface; class menubuilder { private $items; public function __construct(containerinterface $container) { $this->additem(['name' => 'home', 'label' => 'home']); $bundles = $container->get('kernel')->getbundles(); foreach ($bundles $bundle) { if (is_callable(array($bundle, 'getmenuitems')) && $bundle instanceof corebundleinterface) { call_user_func(array($bundle, 'getmenuitems'), $this); } } } ... }
i tried visualize structure want:
any hint better practice achieve structure appreciated.
Comments
Post a Comment