2012-08-14 154 views
0

我剛從Zend Framework開始,我有一些問題, 當我使用URL函數,它是一個名爲「menu-gerenciador」的佔位符「painel」佈局,這就是默認佈局i。在 「painel」 控制器使用(/ gerenciador/painel)它呈現正確的網址:Zend View Helper函數URL重定向到錯誤的控制器

此:

<a href="<?php echo $this->url(array("module" => "gerenciador", "controller" => "usuarios", "action" => "listar")); ?>"> 

變爲這樣的:

<a href="/gerenciador/usuarios/listar"> 

但是當我點擊這個鏈接,我得到重定向到/ gerenciador/painel

我的應用程序的目錄:

​​

Painel控制器:

class Gerenciador_PainelController extends Zend_Controller_Action 
{ 

public function init() 
{ 
    $this->_helper->layout->setLayout('painel'); 

    $auth = Zend_Auth::getInstance(); 

    if(!$auth->hasIdentity()) { 
     $this->_redirect($this->view->url(array('module' => 'default', 'controller' => 'login'))); 
    } 

    $this->view->usuario = $auth->getIdentity(); 
} 

public function preDispatch() 
{ 
    $this->view->render('painel/menu.phtml'); 
} 

public function indexAction() 
{ 

} 

public function logoutAction() 
{ 
    $auth = Zend_Auth::getInstance(); 
    $auth->clearIdentity(); 

    $this->_redirect($this->view->url(array('module' => 'default', 'controller' => 'index', 'action' => 'index')));  
} 


} 

Painel菜單(女巫是在painel佈局內的佔位符(有鏈接)):

<?php $this->placeholder('menu-gerenciador')->captureStart() ?> 

<div id="menu-painel"> 
    <h3><a href="#">Gerenciador</a></h3> 
    <div> 
     <ul class="menulista"> 
      <a href="<?php echo $this->url(array("module" => "gerenciador", "controller" => "painel")); ?>"> 
       <li>Inicial</li> 
      </a> 
      <a href="<?php echo $this->url(array("module" => "gerenciador", "controller" => "usuarios", "action" => "listar")); ?>"> 
       <li>Usuarios</li> 
      </a> 
      <li>Banner</li> 
      <li>Pagina Empresa</li> 
      <li>Configuracoes</li> 
     </ul> 
    </div> 
</div> 

<?php $this->placeholder('menu-gerenciador')->captureEnd() ?> 

而且Finall y中的USUARIOS控制器,它應該通過鏈接重定向:

<?php 

class Gerenciador_UsuariosController extends Zend_Controller_Action 
{ 

    public function init() 
    { 
     $this->_helper->layout->setLayout('painel'); 

     $this->view->headLink()->appendStylesheet($this->view->baseUrl('css/bootstrap/bootstrap.css')); 

     $auth = Zend_Auth::getInstance(); 

     if($auth->hasIdentity()) { 
      $this->_redirect($this->view->url(array('module' => 'default', 'controller' => 'login'), null, TRUE)); 
     } 
    } 

    public function indexAction() 
    { 
     $this->_redirect($this->view->url(array(
      "module"  => "gerenciador", 
      "controller" => "usuarios", 
      "action"  => "listar" 
     ))); 
    } 

    public function listarAction() 
    { 
     $model = new Gerenciador_Model_Usuario(); 

     $this->view->listaUsu = $model->listar();  
    } 


} 

我已經試圖把復位PARAM真我的URL裏面的功能,但是這不工作爲好。 我不知道爲什麼它一直重定向到同一頁面

回答

1

在USUARIOS控制器在init方法,你也行:

if($auth->hasIdentity()) { 

不應該認爲是:

if(!$auth->hasIdentity()) { 

否則登錄的用戶總是重定向遠離該控制器

+0

非常感謝!這樣一個愚蠢的錯誤:) – Hectore 2012-08-15 11:52:36