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, po开发者_JS百科ssibly), 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?
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)
);
If you follow MVC design pattern, you'll have no problem with that, since the business logic should be in the Models, not the Controller actions.
Anyway, you can create a "bulk" action wich will call all the others searching for some data to work with.
精彩评论