Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make CakePHP redirect to a different action/controller?

My situation:

The user is presented with a table or list of items. Beside each item they can click a checkbox to select it, and then at the bottom is a select box which says "With selected items...", and things like "delete", "move to project", "download", etc. You know the deal - bulk operations. Some of the operations will execute immediately and don't require their own view, however others will need an intermediate view (eg: "Move these to which project?").

Since each of the individual operations is handled by a different action (and different controller, possibly), but forms can only post to one address, I need an action which will take the posted data and dispatch it to the appropriate place.

Using redirect() will not work either, since this will need to be AJAX'd in the near future.

Basically I just want an action which will delegate to a different controller/action as if that were the original request: maintaining post data, rendering that view, etc.

Any ideas?

like image 219
nickf Avatar asked Dec 09 '09 04:12

nickf


1 Answers

I was able to figure it out using the 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)
);
like image 128
nickf Avatar answered Oct 11 '22 06:10

nickf