ZF2:添加全局变量进行查看

时间:2014-07-02 07:07:59

标签: zend-framework zend-framework2

我正在尝试学习ZF2,我需要了解一些基础知识。 我想要做的是定义所有模板中可用的某些变量。 我有一个IndexController扩展BaseController,在BaseController我试过这个:

public function onDispatch( \Zend\Mvc\MvcEvent $e ){
  $this->view->superImportantArray = array('data' => ...); 
}

当然这是一种ZF1方法,但不起作用。那我该怎么做?会感激任何提示。

1 个答案:

答案 0 :(得分:1)

如果可以,请尝试并避免使用自定义基本控制器。您可以使用事件系统实现此目的。将use Zend\Mvc\MvcEvent;放在Module.php的顶部,然后添加:

public function onBootstrap(MvcEvent $e)
{
    $eventManager->attach(MvcEvent::EVENT_RENDER, function($e) {
        $layoutViewModel = $e->getViewModel();
        $childViewModels = $layoutViewModel->getChildren();
        if (count($childViewModels) == 0) {
            // probably an AJAX request
            return;
        }
        $viewModel = $childViewModels[0];

        $viewModel->superImportantArray = array('date' => ...);
    });
}