Cakephp 仅在编辑成功时重定向到最后一页

Cakephp 仅在编辑成功时重定向到最后一页,cakephp,cakephp-2.3,Cakephp,Cakephp 2.3,整整一天以来,我一直在努力寻找最佳的解决方案,以重定向到同一个页面上的要求。意味着我有一个编辑操作页面。我可以从任何位置移动此页面,无论是详细信息、视图、最新信息、最近信息,还是从我可以移动到编辑操作的任何其他操作。我想要的是我想要再次移动到最后一个操作,在那里它被重定向。在谷歌搜索时,我找到了解决方案 `$this->redirect($this->referer());` //or `$this->redirect(Controller::referer());` 在

整整一天以来,我一直在努力寻找最佳的解决方案,以重定向到同一个页面上的要求。意味着我有一个编辑操作页面。我可以从任何位置移动此页面,无论是详细信息、视图、最新信息、最近信息,还是从我可以移动到编辑操作的任何其他操作。我想要的是我想要再次移动到最后一个操作,在那里它被重定向。在谷歌搜索时,我找到了解决方案

`$this->redirect($this->referer());` //or 
`$this->redirect(Controller::referer());` 
在要移动到的控制器中使用,但当仅从该页导航时,它会再次恢复为编辑页

另一个解决方案告诉我使用隐藏变量,它的值

`echo $this->Form->input('Song.referer', array('type' => 'text', "value"=>$this->request->referer()));` 
像这样,在成功编辑时请求此变量,这是确定的。但它失败的情况下,验证放在控制器上,因为同一页是开放的情况下的错误,所以我的参考更改。在这种情况下,最佳做法是什么。我是否应该将会话和对我的主要推荐人的每次调用或cakephp 2.3提供的其他内容保存在中?我使用以下方法:

在我的操作中创建指向编辑页面的链接时,我添加了一个“referer”参数

$this->Html->link('Add', array('action' => 'add', 'referer' => 'detail'));
在我的控制器中,我读取referer的值,并在保存数据后重定向到正确的页面,即使在验证错误的情况下,referer的值仍保留在页面的url中


这不是一个很好的解决方案,因为它对看到url的用户来说是不透明的,用户可以通过更改url本身来更改referer。但它可以工作,而且实现起来也很简单

将最后一个位置保存在隐藏字段中,例如

$this->request->data["Business"]["referer"] = $this->referer();
现在,在save函数上设置可选条件,以便像这样在页面上重定向

if ($this->Business->save($this->request->data)) {
    (isset($this->request->data["Business"]["referer"]) && !empty($this->request->data["Business"]["referer"]) ? $this->redirect($this->request->data["Business"]["referer"]) : $this->redirect(array("action" => "index"));
}

这不是一个完美的解决方案。不知道为什么,但我无法实现它。您正在为简单的按钮进行操作,也可以使用
Javascript:history.go(-1)