CakePHP:视图和控制器的灵活重定向

时间:2014-12-02 06:56:46

标签: cakephp cakephp-2.0

我有从不同视图调用的视图。客户编辑视图可以从客户列表中调用,客户可以从订单中进行搜索,等等。其中一些视图是简单视图,其他视图包含添加,编辑或删除数据的表单。在用户完成了他必须在该表单上所做的事情之后,他应该被重定向到调用表单或另一个表单。

使用$this->referer()不起作用,因为有些导航必须像这样:

列表顺序 - >编辑顺序 - >删除订单 - >列表顺序。

我可以为每个调用定义重定向,所以我尝试使用查询字符串并将?redirectTarget=<wherever>添加到每个链接或重定向。为此,我做了一个控制器功能

AppController.php中的

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>

现在我心中有不同的方法,但没有一方我真的很高兴。我不知道要走哪条路。

  • CakePhp中有什么东西我还没找到吗?
  • 使用$ this-&gt; requestAction?
  • 将所有内容更改为表单和按钮,并在控制器中执行所有重定向?
  • 有没有办法为每个视图创建变量?

因为在我看来这是一个comon要求而且我是CakePHP的新手,我正在征求你的意见。

1 个答案:

答案 0 :(得分:0)

使用requestAction应该是最好的方式。

在视图中,您可以使用类似

的内容
$redirect = $this->requestAction('/mycontroller/requestAction');
$url = $this->Html->link('Continue', $redirect));