Php zendframework 2布局';s控制器

Php zendframework 2布局';s控制器,php,zend-framework2,Php,Zend Framework2,我是zend framework 2的新手,无意中发现了一个我无法找到答案的问题: 我有一个layout.phtml,我想在加载布局之前让一个(布局)控制器从我的db中提取一些垃圾并将其传递给要渲染的布局,因此无论是我的应用程序模块还是正在运行的任何其他模块,布局都将始终使用相同的控制器 我的模块是: --模块 --应用 -- --src 谢谢 如果要从数据库中获取一些数据并传递到布局,请在Module.php中尝试以下操作: public function onBootstrap(MvcEve

我是zend framework 2的新手,无意中发现了一个我无法找到答案的问题:

我有一个layout.phtml,我想在加载布局之前让一个(布局)控制器从我的db中提取一些垃圾并将其传递给要渲染的布局,因此无论是我的应用程序模块还是正在运行的任何其他模块,布局都将始终使用相同的控制器

我的模块是:

--模块

--应用

--

--src


谢谢

如果要从数据库中获取一些数据并传递到布局,请在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

-- ...

--layout

     layout.phtml <-- where i hold my layout
 -- ... <-- shop module that uses the application's layout
'view_manager' => array(
   ....
   'template_map' => array(
        'layout/layout'           => __DIR__ . '/../view/layout/layout.phtml',
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
    );

    //...
}