PROBLEM: I can’t pass my variables to my custom layout from action helper’s init method.
I have this action helper “My_Action_Helper_Initializer”:
class My_Action_Helper_Initializer extends Zend_Controller_Action_Helper_Abstract
{
public function init()
{
$controller=$this->getActionController();
//variable passed to controller's view
$controller->view->flop="FLOOP!!";
//variable passed to controller
$controller->boom="BOOM!!";
}
}
In my controller “IndexController”:
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
//print the variable passed from action helper
echo $this->boom;
}
}
then in my “layout.phtml”:
//print variable passed from action helper
echo $this->flop;
-
So the “boom” variable echoed out by controller action is shown correctly.
-
The “flop” variable (passed to my layout) is not shown.
QUESTION: Why the variable passed to controller action is correctly output while the other one passed to the layout view is not?
Thanks
Luca
When your helper’s init() called, ViewRenderer’s init() wasn’t yet. This is because of order in helpers stack.
If you enable strict standards error reporting, you should see something like this in your helper “Creating default object from empty value in …”
You should consider moving your code to preDispatch() hook as init() method should be used for helper initialization.
To get view instance for controller:
if you want to pass parameter to layout, then use