我有从不同视图调用的视图。客户编辑视图可以从客户列表中调用,客户可以从订单中进行搜索,等等。其中一些视图是简单视图,其他视图包含添加,编辑或删除数据的表单。在用户完成了他必须在该表单上所做的事情之后,他应该被重定向到调用表单或另一个表单。
使用$this->referer()
不起作用,因为有些导航必须像这样:
列表顺序 - >编辑顺序 - >删除订单 - >列表顺序。
我可以为每个调用定义重定向,所以我尝试使用查询字符串并将?redirectTarget=<wherever>
添加到每个链接或重定向。为此,我做了一个控制器功能
public function getRedirectTarget() {
if ($this->request->query('redirectTarget')) {
return $this->request->query('redirectTarget');
} else {
return array(
'controller' => 'pages',
'action' => 'home'
);
}
}
这适用于表单,因为我可以在控制器中使用getRedirectTarget()
,但我无法从视图中访问该功能以构建链接。 (至少我没有这样做Can you call a controller function from a view in CakePHP?)在顶部的示例中,我必须将信息从订单列表传递到编辑视图,以构建链接和底层控制器以进行表单操作。 / p>
现在我心中有不同的方法,但没有一方我真的很高兴。我不知道要走哪条路。
因为在我看来这是一个comon要求而且我是CakePHP的新手,我正在征求你的意见。
答案 0 :(得分:0)
使用requestAction
应该是最好的方式。
在视图中,您可以使用类似
的内容$redirect = $this->requestAction('/mycontroller/requestAction');
$url = $this->Html->link('Continue', $redirect));