2012-09-11 73 views
1

有問題關於Zend Framework 2. 在我的應用程序中,我有一個模塊處理我的整個應用程序。Zend Framework 2主題管理器

爲了進一步改進,我想開發一個主題管理器。

主題管理器應該使用像?theme = lightTheme這樣的url參數。 主題被組織在模塊外的某個文件夾「模板」中。 主題還應該包含視圖腳本。

據我所知,通過閱讀一些ZF2文件可以實現一些聽衆事件。

有沒有人做得那麼好,或者可以舉一些例子來說明如何解決這個問題?

+0

我聽到這個問題,以及有關監聽活動。他們的意思是,在你的Module.php類中,你嚮應用程序註冊了一個事件。然後,根據某些條件更改佈局文件。當然,每個佈局文件都是使用diff CSS文件的「主題」。我會嘗試建立一個鏈接到我看到的這個網頁。 –

回答

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 

配置/ 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