2014-12-02 75 views
0

我有从不同视图调用的视图。客户编辑视图可以从客户列表中调用,客户可以从订单内搜索等等。其中一些视图是其他包含用于添加,编辑或删除数据的表单的简单视图。在用户完成他必须在该表单上的内容之后,他应该被重定向到调用表单或其他表单。CakePHP:视图和控制器的灵活重定向

使用$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()但我不能访问视图内的函数建立链接形式。 (在leas我不这样做Can you call a controller function from a view in CakePHP?)在顶部的例子中,我必须将信息从订单列表传递到编辑视图以构建链接和表单操作的底层控制器。

现在我在脑海中有不同的揣测,但没有一个我真的很高兴。我不知道要走哪条路。

  • CakePhp中有没有找到我还没找到的东西?
  • 使用$ this-> requestAction?
  • 改变一切形式和按钮,并在控制器中做所有重定向?
  • 有没有办法为每个视图创建一个变量?

因为这在我看来像一个comon的要求,我对CakePHP很新,我要求你的建议。

回答

0

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

在视图中,可以有类似

$redirect = $this->requestAction('/mycontroller/requestAction'); 
$url = $this->Html->link('Continue', $redirect)); 
+0

谢谢你,为我工作。由于这是一个非常小的应用程序,因此无法对性能进行任何说明 – Axx 2014-12-06 08:57:11

相关问题