Для примера создадим модуль с именем ZfCommons, который будет инициализировать переменную в Layout содержащую namespace модуля…
Для начала зарегистрируем наш модуль в application.config.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
И создадим функцию в Module.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | namespace ZfCommons; use Zend\ModuleManager\Feature\AutoloaderProviderInterface, Zend\ModuleManager\Feature\ConfigProviderInterface, Zend\Mvc\MvcEvent; class Module implements AutoloaderProviderInterface, ConfigProviderInterface { public function onBootstrap($e) { $eventManager = $e->getApplication()->getEventManager(); $eventManager->attach('dispatch', array($this, 'loadConfiguration' )); } public function loadConfiguration(MvcEvent $e) { $controller = $e->getTarget(); $controllerClass = get_class($controller); $moduleNamespace = substr($controllerClass, 0, strpos($controllerClass, '\')); //set 'variable' into layout... $controller->layout()->modulenamespace = $moduleNamespace; } public function getAutoloaderConfig(){ /* common code */ } public function getConfig(){/* common code */} } |
В Layout можете вызвать:
1 |
Как получить эту переменную в view:
1 |
Также можно установить эту переменную следующим образом:
1 | $e->getViewModel()->setVariable('modulenamespace', $moduleNamespace); |
Ссылка на оригинал