Zend Framework url重定向

时间:2010-03-12 13:52:13

标签: php zend-framework

<?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')但不起作用!你知道在这种情况下如何进行重定向?

最诚挚的问候,

3 个答案:

答案 0 :(得分:7)

......代码的其余部分

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

......代码的其余部分

答案 1 :(得分: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。应该这样做。

答案 2 :(得分:2)

使用Zend_Controller_Action_HelperBroker获取重定向帮助程序或直接从Request对象执行重定向。

参见

中给出的例子