有关于 Zend Framework 2 的问题。在我的应用程序中,我有一个模块来处理我的整个应用程序。
为了进一步改进,我想开发一个主题管理器。
主题管理器应该使用像 ?theme = lightTheme 这样的 url 参数。主题被组织在模块外的某个文件夹“模板”中。主题还应包括视图脚本。
据我所知,通过阅读一些 ZF2 文档,它可以通过一些监听器事件来实现。
有人做得好吗,或者可以给我一些例子,我如何解决这个要求?
有关于 Zend Framework 2 的问题。在我的应用程序中,我有一个模块来处理我的整个应用程序。
为了进一步改进,我想开发一个主题管理器。
主题管理器应该使用像 ?theme = lightTheme 这样的 url 参数。主题被组织在模块外的某个文件夹“模板”中。主题还应包括视图脚本。
据我所知,通过阅读一些 ZF2 文档,它可以通过一些监听器事件来实现。
有人做得好吗,或者可以给我一些例子,我如何解决这个要求?
我认为这种模式可以工作......
主题文件夹结构
/path/to/themes
/path/to/themes/some_theme
/path/to/themes/some_theme/layout.phtml
/path/to/themes/another_theme
/path/to/themes/another_theme/layout.phtml
配置/模块.config.php
return array(
'view_manager' => array(
'template_path_stack' => array(
'/path/to/themes',
),
),
);
模块.php
namespace Something;
class Module
{
public function onBootstrap(\Zend\EventManager\EventInterface $e)
{
$application = $e->getApplication();
$em = $application->getEventManager();
$em->attach('route', function($e) {
// decide which theme to use by get parameter
// $layout = 'some_theme/layout';
// $layout = 'another_theme/layout';
$e->getViewModel()->setTemplate($layout);
});
}
}
// 编辑:改为使用路由事件而不是控制器加载器