2010-03-12 4 views
1
<?php 
class PI_Controller_Plugin_AssetGrabber extends Zend_Controller_Plugin_Abstract 
{ 
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) 
{ 
    /* 
     The module name 
    */ 
    $moduleName = $request->getModuleName(); 
    /* 
     This modules requires the user to be loggedin in order to see the web pages! 
    */ 
    $loginRequiredModules = array('admin'); 

    if (in_array($moduleName,$loginRequiredModules)) { 
     $adminLogin = new Zend_Session_Namespace('adminLogin'); 
     if (!isset($adminLogin->loggedin)) { 
      /*-------------------------------------- 
       Here I want to redirect the user 
      */ 
      $this->_redirect('/something'); 
     } 
    } 
} 
} 

Я пытаюсь сделать перенаправление $this->_redirect('/something'), но не работает! Вы знаете, как я могу сделать переадресацию в этом случае?Zend Framework url redirect

С наилучшими пожеланиями,

+0

Что сообщение об ошибке? Ничего? Просто не перенаправлять? Вы можете попробовать $ this -> _ helper-> redirector() тоже, или $ this -> _ helper-> gotoUrl() подробнее см. В http://framework.zend.com/manual/en/zend.controller.actionhelpers.html # zend.controller.actionhelper.redirector.basicusage. –

+0

Я не могу использовать эти вещи в своем плагине, потому что вы можете ТОЛЬКО использовать '$ this -> _ redirect' .. только если вы расширяете Zend_Controller_Action – Uffo

ответ

2

Либо используйте Zend_Controller_Action_HelperBroker, чтобы получить помощник перенаправления или перенаправить непосредственно из объекта Request.

Смотрите примеры приведены в

+0

Возможно, я схожу с ума ... но эта ссылка является URL-адресом этой самой страницы ... – Urda

+0

@ Урда До! Обновлено :) – Gordon

5
<?php 
class AlternativeController extends Zend_Controller_Action 
{ 
    /** 
    * Redirector - defined for code completion 
    * 
    * @var Zend_Controller_Action_Helper_Redirector 
    */ 
    protected $_redirector = null; 

    public function init() 
    { 
     $this->_redirector = $this->_helper->getHelper('Redirector'); 
    } 

    public function myAction() 
    { 
     /* Some Awesome Code */ 

     $this->redirector('targetAction', 'targetController'); 
     return; //Never reached! 
    } 
} 

Вы должны получить помощник редиректора, то вы можете определить targetAction и targetController с редиректор. Это должно сделать это.

+0

В коде вы можете использовать' $ this -> _ redirect', но если вы посмотрите в моем коде вы увидите, что я нажимаю контроллер плагина Asset. – Uffo

+0

Уффу вам все равно нужно получить помощника. Вы также можете использовать '$ this -> _ redirector-> gotoUrl ('/ my-controller/my-action/param1/test/param2/test2');' – Urda

+0

Я не понимаю, почему мне нужно создать контроллер чтобы использовать помощника, я хочу использовать этот помощник в своем плагине, а не в моем контроллере. – Uffo

7

... остальной код

if (!isset($adminLogin->loggedin)) { 
    $baseUrl = new Zend_View_Helper_BaseUrl(); 
    $this->getResponse()->setRedirect($baseUrl->baseUrl().'/something'); 
} 

... остальной код

Смежные вопросы