2012-08-14 158 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