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 / module.config.php

return array(
    'view_manager' => array(
        'template_path_stack' => array(
            '/path/to/themes',
        ),
    ),
);

Module.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);
        });
    }
}

//編集:controllerLoaderの代わりにrouteイベントを使用するように変更

于 2012-09-13T19:00:23.890 に答える