【问题标题】:CakePHP redirect method not redirectingCakePHP 重定向方法不重定向
【发布时间】:2012-09-05 06:18:18
【问题描述】:

我正在尝试使用 CakePHP 重定向方法重定向到新页面,但由于某种原因重定向不起作用。我用来重定向的代码是

public function update_sticky_postition_in_db()
{   
     $this->autoRender = false;

     ... // Save info to database

     $this->redirect(array('action' => 'tool'));
}

其中 tool 是我要重定向到的视图的名称。为了尝试加快发现问题的过程,我检查了几件事,并认为我已经找到了问题的原因。基本上我正在尝试重定向到当前处于活动状态的视图,我认为这是它不重定向的部分原因。我读过它可能与页面缓存有关,但我不确定如何解决该问题。

此外,当使用 firebug 时,我可以看到重定向正在发送一个 GET 请求,但之后什么都没有发生。我必须对 GET 请求做些什么,还是应该让 Cake 为我处理。我还检查了 GET 的 URL,它是正确的。

它位于控制器中,名称正确,因为我可以查看原始工具页面。

另外,update_sticky_postition_in_db() 方法没有视图(因此自动渲染设置为 false),其预期目的是通过 ajax 调用更新数据库中的一行。

【问题讨论】:

  • 你是只有这个页面还是所有页面都有这个问题?
  • 它似乎不会重定向到任何页面。另外我应该添加重定向不在控制器的工具方法中。
  • 你能显示上下文吗,$this->redirect 在哪里...(我假设它在控制器中是的?)
  • 发布更多控制器代码和视图。但是你必须重定向到你的控制器而不是其他部分
  • 好的,我已经用函数调用更新了它,它在发送 GET 请求时被调用。我也试过注释掉更新数据库代码,只留下重定向,它仍然不起作用。

标签: ajax cakephp get-request


【解决方案1】:

从您的帖子看来,您正在使用 ajax 调用触发 update_sticky_postition_in_db(),因此重定向将不起作用。

您可以在 ajax success 方法中使用 JavaScript 进行重定向。

为了做到这一点,您可以从上述方法中发送一些 json_encode() 消息,并在 ajax success 方法中检查该状态,您可以使用 window.location 进行重定向。

【讨论】:

  • 也碰巧知道使用我目前使用的方法调试数据的好方法。我曾尝试使用调试和设置闪存方法(我试图刷新页面的部分原因),但这些方法似乎都不起作用。有什么想法吗?
  • 要回答我自己关于调试信息的评论,您可以使用 $this->log() 方法。这是documentation的链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多