zend框架中的_redirect()函数

时间:2013-11-05 09:25:29

标签: function class zend-framework redirect layout

我在library / My / Utils / Utils.php中创建了一个文件。该文件的内容是:

class My_Utils_Utils{
    public function test(){
        $this->_redirect('login');   
    }
}

从布局中调用此类;问题出在_redirect();我收到此错误:页面未正确重定向。我的问题是如何从ZEND框架1中的一个类中调用_redirect()函数。 提前谢谢。

3 个答案:

答案 0 :(得分:0)

使用redirect()代替_redirect()。用法是:

$this->redirect(<action>, <controller>, <module>, <param>);

在你的情况下,$this->redirect('login');应该做到这一点。

答案 1 :(得分:0)

您可以使用redirector action-helper,您可以使用以下HelperBroker静态获取:

// get the helper
$redirectHelper = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');

// call methods on the helper
$redirect->gotoUrl('/some/url');

但应注意,布局被视为视图层的一部分。通常,任何导致重定向的检查都应该在请求调度周期的早期进行,通常在控制器或front-controller plugin中进行。

答案 2 :(得分:0)

_redirect函数由Zend_Controller_Action类提供。您可以通过两种方式解决此问题:

  1. 扩展Zend_Controller_Action并使用_redirect

    class My_Utils_Utils extends Zend_Controller_Action {
       public function test(){
        $this->_redirect('login');   
       }
    

    }

  2. 布局:

         $request = Zend_Controller_Front::getInstance()->getRequest();
         $response = Zend_Controller_Front::getInstance()->getResponse()
         $util = new My_Utils_Utils($request, $response); // The constructor for Zend_Controller_Action required request and response params.
        $util->test();
    
    1. 使用gotoUrl()函数Zend_Controller_Action_Helper_Redirector :: gotoUrl()

       $redirector = new Zend_Controller_Action_Helper_Redirector();
       $redirector->gotoUrl('login');
      
       //in layout : 
       $util = new My_Utils_Utils();
       $util->test();