我们开始关注网站cakephp.org上托管的CakePHP博客教程 - http://book.cakephp.org/2.0/en/tutorials-and-examples/blog/part-two.html
此时我们在提交表单(即功能编辑/添加)后仍然处于重定向状态。这就是我们的代码的样子:
public function edit($id = null) {
$this->Post->id = $id;
if ($this->request->is('get')) {
$this->request->data = $this->Post->read();
} else {
if ($this->Post->save($this->request->data)) {
$this->Session->setFlash('Your post has been updated.');
$this->redirect($this->referer());
} else {
$this->Session->setFlash('Unable to update your post.');
}
}
}
在对$this->redirect($this->referer());
行进行评论后,该页面正在引用他自己的...添加的行将保留在空白页面上。
示例:http://www.drukwerkprijsvergelijk.nl/posts/
请帮助这只小猫,我们绝望了。
答案 0 :(得分:4)
你不能在编辑时使用referer()。那是因为在第一次POST后,引用者就是你现在所在的页面。 如果此页面上没有表单帖子,则referer()只能用于重定向(例如删除或访问页面后立即编辑/添加)。 但即使使用delete(),你也要小心。来自“view”会导致重定向进入重定向循环......
您可以将表单中的referer存储为隐藏字段,并使用它来重定向回来。
答案 1 :(得分:2)
由于上面解释的原因,你不能在编辑和添加时使用referer()。
使用类似
的内容$this->redirect(array('action' => 'view', $id));
或
$this->redirect(array('action' => 'index'));
代替。
您也可以尝试在url数组中指定控制器:
$this->redirect(array('controller' => 'posts', 'action' => 'index'));
答案 2 :(得分:2)
你的PostController或AppController中的PHP代码之外是否有空格?我只是查看了编辑页面的源代码,它似乎包含一个空格字符。这可能会阻止设置标头,从而阻止重定向工作。
答案 3 :(得分:1)
在过滤功能之前使用此功能
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); // // HTTP/1.1
header("Pragma: no-cache");