1

有关于 Zend Framework 2 的问题。在我的应用程序中,我有一个模块来处理我的整个应用程序。

为了进一步改进,我想开发一个主题管理器。

主题管理器应该使用像 ?theme = lightTheme 这样的 url 参数。主题被组织在模块外的某个文件夹“模板”中。主题还应包括视图脚本。

据我所知,通过阅读一些 ZF2 文档,它可以通过一些监听器事件来实现。

有人做得好吗,或者可以给我一些例子,我如何解决这个要求?

4

1 回答 1

5

我认为这种模式可以工作......

主题文件夹结构

/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);
        });
    }
}

// 编辑:改为使用路由事件而不是控制器加载器

于 2012-09-13T19:00:23.890 回答