zendframework 2布局的控制器

时间:2013-12-05 09:51:16

标签: php zend-framework2

我是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',

谢谢!

1 个答案:

答案 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作为数据库结果。