如何使CakePHP重定向到不同的操作/控制器?

如何使CakePHP重定向到不同的操作/控制器?,php,model-view-controller,cakephp,Php,Model View Controller,Cakephp,我的情况: 用户将看到一个表或项目列表。在每个项目旁边,他们可以单击一个复选框来选择它,然后在底部是一个选择框,上面写着“与所选项目…”,以及“删除”、“移动到项目”、“下载”等内容。您知道交易-批量操作。一些操作将立即执行,不需要自己的视图,但是其他操作将需要中间视图(例如:“将这些移动到哪个项目?”) 由于每个单独的操作都由不同的操作(可能是不同的控制器)处理,但表单只能发送到一个地址,因此我需要一个操作,该操作将接收已发布的数据并将其发送到适当的位置 使用redirect()也不会起作用,

我的情况:

用户将看到一个表或项目列表。在每个项目旁边,他们可以单击一个复选框来选择它,然后在底部是一个选择框,上面写着“与所选项目…”,以及“删除”、“移动到项目”、“下载”等内容。您知道交易-批量操作。一些操作将立即执行,不需要自己的视图,但是其他操作将需要中间视图(例如:“将这些移动到哪个项目?”)

由于每个单独的操作都由不同的操作(可能是不同的控制器)处理,但表单只能发送到一个地址,因此我需要一个操作,该操作将接收已发布的数据并将其发送到适当的位置

使用
redirect()
也不会起作用,因为这需要在不久的将来使用AJAX

基本上,我只想要一个动作,它将委托给不同的控制器/动作,就像原始请求一样:维护post数据,呈现该视图,等等


有什么想法吗?

如果您遵循MVC设计模式,您将不会有任何问题,因为业务逻辑应该在模型中,而不是控制器操作中


无论如何,您可以创建一个“批量”操作,它将调用所有其他搜索某些数据的操作。

我可以使用Dispatcher找到它

// for example, to reroute to users/delete

// this is in the controller which receives the request.
// this could even be in the AppController

$this->autoRender = false;
$d = new Dispatcher();
$d->dispatch(
    array("controller" => "users", "action" => "delete"),
    array("data" => $this->data)
);

是的,我该怎么做?如何在不同的控制器上调用不同的操作?比如说,不推荐使用“调用”。但是您可以在第一个控制器中实例化所需的控制器。不过,最好的选择是让模型完成这项工作,例如,使用一个控制器动作bulk()。顺便说一句,当您移植到ajax时,事情将更容易处理