sve*_*reg 3 php cakephp cakephp-3.0
我有一个动作,/ controller/edit,可以从多个位置点击(例如/ controller/index和/ controller/view).
一旦用户完成了对记录的编辑并单击了save,我希望它们返回到它们来自的位置(分别是/ controller/index或/ controller/view).
起初,我尝试将用户访问的每个页面存储在他们的会话中(例如,主页>索引>编辑),然后重定向到该列表中倒数第二个条目 - 这样就可以正常工作直到他们打开另一个选项卡.如果,当他们正在编辑记录时,他们打开另一个标签并在其他地方离开,他们的会话变量一直在建立(主页>索引>编辑>帮助>帮助页面),当时间到了重定向第二个 - -last条目不再包含正确的操作.
我的编辑操作/控制器/编辑如何在保存时将用户重定向回他们来自的引用页面,而不管用户在其他选项卡中做了什么?
编辑:保存后我不能使用referrer,因为进程是这样的:
小智 5
用于返回您来自的任何地方
return $this->redirect($this->referer());
Run Code Online (Sandbox Code Playgroud)
小智 5
我不得不处理同样的问题,我做到了:
1)在我的控制器的GET部分中,将引用程序设置为如下所示的视图变量:
$this->set('redirect', $this->referer());
Run Code Online (Sandbox Code Playgroud)
2)在表单中,设置一个名为“ redirect”的隐藏控件:
echo $this->Form->hidden('redirect', ['value' => $redirect]);
Run Code Online (Sandbox Code Playgroud)
3)在控制器中,在处理POST请求之后,重定向到隐藏输入的值:
if (isset($this->request->data['redirect'])) {
$this->redirect($this->request->data['redirect']);
}
Run Code Online (Sandbox Code Playgroud)
当然,这可以抽象为一个组件,也可以使用会话,但是这种方法对我有用。