2013-04-18 49 views
1

我一直在查看文檔,我似乎無法找到一種方法來執行此操作。我知道我可以使用headScript將樣式表添加到單獨的視圖中,但是我想向樣式表中的所有操作添加樣式表。Zend Framework 2 - 向控制器添加樣式

有沒有人這樣做呢?我相信這是一個簡單的任務。

感謝

回答

2

你需要做的是掛鉤到dispatch事件,基於該被派往控制器的類型,設置相應的佈局(推薦)。您也可以直接修改視圖並添加所需的資產。

這可以通過使用下面的代碼在你Module類來實現:

<?php 
namespace App; 

class Module 
{ 
    public function onBootstrap(MvcEvent $event) 
    { 
     $event->getApplication()->getEventManager()->getSharedManager()->attach('Zend\Stdlib\DispatchableInterface', MvcEvent::EVENT_DISPATCH, function (MvcEvent $event) 
     { 
      $application = $event->getApplication(); 
      $services = $application->getServiceManager(); 
      $view = $services->get('ViewRenderer'); 
      $controller = $event->getTarget(); 
      if ($controller instanceof \App\Controller\Entry) 
      { 
       $controller->layout('layout/app/entry'); 
       // -- OR -- 
       $view->headStyle()->appendStyle('body{background:red}'); 
      } 
     }, 100); 
    } 
} 

我希望這回答您的問題!

+0

因此,這會將整個佈局應用於控制器(以及其所有動作)?它可以工作,但這似乎有點矯枉過正,只是將一個樣式表添加到給定控制器的所有操作中。我很難相信他們會爲版本2帶走這個功能(在版本1中這很簡單) – aserwin

+0

我編輯了我的答案,以顯示如何直接修改資產而不必重複整個佈局。 – radnan

+0

非常好...比我想象的更簡單。謝謝你的更新。 – aserwin