Sunday, September 27, 2009

Controller::setAction heads-up

The comment for setAction() says that it "Internally redirects one
action to another." However, it doesn't really *redirect* so much as
simply call the action using call_user_func_array(). It amounts to
about the same thing, more or less, but there's something to keep in
mind:

public function someAction()
{
$this->setAction(
'error',
'This error message should display.',
array('foo' => 'bar')
);
}

private function error($msg = '', $data = array())
{
$this->set(compact('msg', 'data'));
}

This will display the error view *but* the $viewVars will not be set.
In order to make this work, set the access to the called action to
protected (or public, obviously), because setAction() is defined in
the parent class (Controller). If you absolutely need it to be
private, you'll have to override setAction() in your own controller.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to cake-php+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

No comments: