2014-02-25 54 views
0

該事件至今我曾在我的應用程序的單一佈局,module.config.php配置如下:ZF2:開關基於Idenitity佈局 - 使用

'view_manager' => array(
     'template_map' => array(
      'layout/layout' => __DIR__ . '/../view/layout/layout.phtml', 
     ), 

我現在嘗試切換基於用戶是否登錄的佈局。這個信息是我Core\Auth服務,而我如下使用它在我的module.php

public function onBootstrap(MvcEvent $e) 
{ 
     ... 

     $eventManager->attach('dispatch', function ($e) { 
     $application = $e->getApplication(); 
     $auth = $application->getServiceManager()->get('Core\Auth'); 

     if (!$auth->isLoggedIn()) { 
      $viewModel = $e->getViewModel(); 
      $viewModel->setTemplate('layout/public'); 
     } 
    }, -1000000); 
} 

的問題是,我不知道哪個事件將其附加到,並要使用的優先級。如果我把它安裝到:...

  • ...引導或路線事件時,它會覆蓋
  • ...具有高優先級它被覆蓋dispatch事件
  • ...的調度事件的優先級較低,它會覆蓋控制器操作可能做出的任何佈局更改,例如$視圖 - > setTerminal(真)
  • ...渲染事件,(再次),它會替換行動

應該在哪裏我可以將其附着所做的更改?並以什麼優先?

回答

0

奧普斯,我的錯。

我在做索引/索引操作中的相同isLoggedIn()測試,結果混淆不清。我已經刪除它,並將佈局切換到路由事件,默認優先級,到目前爲止它工作正常!