从模块类onbootstrap方法执行重定向

时间:2016-12-12 01:15:01

标签: zend-framework zend-framework2

是否有正确的方法在Application Module class内部使用zend框架执行重定向?

我想重新构建此代码以使用基于zend的重定向。

class Moudle
{

      public function onBootstrap(MvcEvent $e)
      {
         $arg = 1;
         if($arg==1){
            header("Location: index.php?redirect=1");  
            exit();  
         }
      }

1 个答案:

答案 0 :(得分:0)

我不知道别人怎么做,但这里是我在项目中已经做过的一个例子:

class Module
{

  public function onBootstrap(MvcEvent $e)
  {
     $arg = 1;
     if($arg==1){
        $response = $e->getResponse();
        $response->getHeaders()->clearHeaders()->addHeaderLine('Location', '/index.php?redirect=1');
        $response->setStatusCode(302)->sendHeaders();
        exit();  
     }
  };

如果您不想对网址进行硬编码(根据我不推荐),那么您可以使用从服务管理器获取的视图助手网址或控制器插件网址来使用该名称你的路线而不是“/index.php?redirect=1”。我总是宁愿避免在我的ZF项目中使用硬编码网址,因为我们可以使用路由的名称。这取决于你。