dongshu4755 2016-06-24 23:05
浏览 29
已采纳

Zend Framework v1 - 当我在控制器中使用header()时 - 重定向不起作用

when I use function header() in controller - redirect not work, is it normal in Zend?

Ps... But if I add exit() after header() - this work. And If I use $this->_redirect - is work.

  • 写回答

1条回答 默认 最新

  • dphs48626 2016-06-25 10:50
    关注

    Yeah, this is pretty normal.

    PHP frameworks like ZF1 typically create/expose a Response object that represents the response that your server-side application wants to send to the waiting (typically browser) client. It typically encapsulates the HTTP headers and body that you wish to send. ZF1 is probably overriding your manual header() call and replacing it with headers from the Response object. That's why your header() call appears effective when followed immediately by an exit(); you're not giving the framework a chance to use its own headers from the Response object.

    As you appear to be aware, ZF1 controllers expose a Redirector action helper that can set the desired headers on this Response object and immediately send the response. For example:

    // Get a reference to the redirector
    $redirector = $this->_helper->getHelper('Redirector');
    
    // To redirect to a given url
    $redirector->gotoUrl($url);
    
    // To redirect to a given module, controller, and action
    // $controller is optional, defaults to current controller
    // $module is optional, defaults to current module
    $redirector->gotoSimple($action, $controller, $module);
    
    // To redirect to a named route with specified parameters
    $redirector->gotoRoute($route, $params);
    

    To set HTTP response codes, as well, you can do something like:

    $redirector->setCode(301)->setGoToUrl('/some/url')->redirectAndExit();
    

    See docs for the Redirector action helper.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示