【问题标题】:Redirect after Post发布后重定向
【发布时间】:2010-09-14 19:40:54
【问题描述】:

表单(方法 POST)提交后,我希望将用户重定向到特定页面。

通常我使用简单的线条

header("Location: /path/to/redirect/");
exit;

Zend_Controller_Action 有方法 _redirect 例子:

$this->_redirect("/path/to/redirect/");

但它有一个简单的问题:如果我刷新页面(按F5)最后一个控制器动作被激活。所以它就像双重职位。
当然我可以使用老式的方式,但我只想找到 zend 风格的重定向。

编辑:在重定向后我想要清理表单数据。当然我可以使用自己的方法和 header("location:/path") 但我搜索它是在标准 zf 中实现的

有什么想法吗?

【问题讨论】:

  • +1 我以前也有过这个问题。我仍然使用header 重定向。
  • _redirect($url, array $options = array()):重定向到另一个位置。此方法采用 URL 和一组可选选项。默认情况下,它执行 HTTP 302 重定向。是你的浏览器在做转发,而不是 zend
  • @Byron Whitlock:我知道这是浏览器的问题。只是在这一步中寻找更好的做法;刷新后它只是调用具有相同表单数据的旧控制器操作。如果 where 没有验证,那么您可以举例假票结果。我只是还没有找到使用标准 zf 方法的方法。

标签: php zend-framework redirect


【解决方案1】:

我认为那是因为 _redirect 使用内部重定向。您需要使用外部的。您需要在您的操作中直接使用 Redirector 操作助手:

$this->_redirector->gotoUrlAndExit($url);

【讨论】:

    【解决方案2】:

    设置一个会话变量表示数据已经发布,如果没有发布数据,重定向?

    【讨论】:

    • 我认为他的问题的重点是,ZF 重定向助手让发布的数据悬而未决,刷新尝试重新提交它。即使他采取了通常的安全措施来防止重新发布,用户也会收到烦人的“您将要重新提交数据”弹出窗口。我假设他的问题是,有没有比使用删除表单数据的header 重定向方法更好/不同/更可取的方法。
    • @manyxcxi:是的,你是对的。我只想在重定向后删除表单数据。
    • 我不需要保存发布数据(这不是问题)。我只想找到 zend 方式来进行重定向和清理表单数据。
    • @Vaidas Zilionis 我从您的原始帖子中无法理解
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 2013-10-11
    相关资源
    最近更新 更多