Zobacz dodaj widok zmiennym przekroju poniżej
dodać go w pliku Module.php.
Można to również zrobić za pomocą pomocnika widoku.
/**
* Remember to keep the init() method as lightweight as possible
*
* @param \Zend\ModuleManager\ModuleManager $moduleManager
*/
public function init(ModuleManager $moduleManager)
{
$events = $moduleManager->getEventManager();
$events->attach('loadModules.post', array($this, 'modulesLoaded'));
$events->attach('onBootstrap', array($this, 'bootstrap'));
$sharedEvents = $events->getSharedManager();
$sharedEvents->attach(__NAMESPACE__, 'bootstrap', array($this, 'bootstrap'), 100);
$sharedEvents->attach(__NAMESPACE__, 'bootstrap', array($this, 'initializeView'), 100);
$sharedEvents->attach(__NAMESPACE__, 'dispatch', array($this, 'addViewVariables'), 201);
}
/**
*
* @param \Zend\Mvc\MvcEvent $e
*/
public function loadConfiguration(MvcEvent $e)
{
$e->getApplication()->getServiceManager()
->get('ControllerPluginManager')->get('AclPlugin')
->checkAcl($e); //Auth/src/Auth/Controller/AclPlugin
}
/**
*
* @param \Zend\EventManager\EventInterface $e
*/
public function bootstrap(Event $e) {
$eventManager = $e->getParam('application')->getEventManager();
//$app->getEventManager()->attach('dispatch', array($this, 'checkAcl'), 100);
}
/**
* pass variables to layout
*
* @param \Zend\EventManager\EventInterface $e
*/
public function addViewVariables(Event $e)
{
$route = $e->getRouteMatch();
$viewModel = $e->getViewModel();
$variables = $viewModel->getVariables();
if (false === isset($variables['controller'])) {
$viewModel->setVariable('controller', $route->getParam('controller'));
}
if (false === isset($variables['action'])) {
$viewModel->setVariable('action', $route->getParam('action'));
}
$viewModel->setVariable('module', strtolower(__NAMESPACE__));
}
/**
*
* @param \Zend\Mvc\MvcEvent $e
*/
public function initializeView(Event $e)
{
}
iw układzie można łatwo uzyskać dostęp do tych zmiennych za pomocą ich nazwy takie jak $ module $ action, $ sterownika według powyższego przykładu
to będzie działać, jak można próbować uzyskać dostęp do 'testVar'? – Sam
Używam $ testvar, ale zapomniałem powiedzieć, że układ znajduje się w folderze Application/view/layout, a mój kontroler jest w innym module. Może to jest problem .. Myślałem, że układy w aplikacji mogą być używane gdziekolwiek. – Juck
Ah, chcesz użyć var w layout.phtml, a nie w skryptach widoku akcji? – Sam