我是zend框架2的新手,并且偶然发现了我无法找到答案的问题:
我有一个layout.phtml,我希望在布局加载之前让(布局)控制器从我的db中获取一些垃圾并将其传递给布局进行渲染,所以无论是我的应用程序模块还是其他任何正在运行的模块,布局将始终使用相同的控制器。
我的模块是:
- 模块
- 应用
--...
- SRC
--application --controller LayoutController.php <-- where i would like to hold my layout controller
- 视图
-- ... --layout layout.phtml <-- where i hold my layout
- 店
-- ... <-- shop module that uses the application's layout
我的module.config.php布局已定义:
'view_manager' => array(
....
'template_map' => array(
'layout/layout' => __DIR__ . '/../view/layout/layout.phtml',
谢谢!
答案 0 :(得分:2)
如果您想从数据库中获取一些数据并传递给布局,请在Module.php中尝试:
public function onBootstrap(MvcEvent $e)
{
//...
$application = $e->getApplication();
$sm = $application->getServiceManager();
$application->getEventManager()->getSharedManager()
->attach('Zend\Mvc\Controller\AbstractActionController', 'dispatch',
function($e) use ($sm) {
$dbResult = $sm->get('YourModule\Model\FooTable')->bar();
$sm->get('ControllerPluginManager')->getController()->layout()->dbResult = $dbResult;
}
, 2
);
//...
}
在layout.phtml中使用$this->dbResult
作为数据库结果。