目前,我使用 BaseController 的 onDispatch 方法设置了应用程序的整体布局.phtml 使用的几个变量,我的所有其他 Controller 都扩展了该方法:
public function onDispatch(MvcEvent $e)
{
$config = $this->getServiceLocator()->get('config');
$this->layout()->setVariable('platformName', $config['platform']['name']);
$this->layout()->setVariable('platformYear', $config['platform']['year']);
}
这工作正常,直到我测试一些错误页面并发现这些页面没有提供变量,因为它没有使用基本 Controller 。
如何解决此问题并为错误页面提供相同的变量?
最佳答案
更改您正在监听的事件。
在这种情况下,我会将此逻辑移至应用程序引导事件或应用程序渲染事件(我尚未对此进行测试,但它可能会正常工作)。
一个示例,在您的 Module.php 中
public function onBootstrap($e)
{
$config = $e->getApplication()->getServiceManager()->get('config');
//$e->getViewModel()->setVariable();
}
尚未测试该注释行,但它应该会让您朝着正确的方向前进。
编辑:找到使用渲染事件的示例
public function onBootstrap($e)
{
$event = $e->getApplication()->getEventManager();
$event->attach('render', function($e) {
$config = $e->getApplication()->getServiceManager()->get('config');
$e->getViewModel()->setVariable('test', 'test');
});
}
关于zend-framework2 - 设置 ZF2 中的 (404) 错误页面使用的布局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18211279/