views:

499

answers:

1

Hi,

I am trying to use a layout for each actions in a controller. For example, I have three actions in index controller. Those are indexAction, testAction, and welcomeAction. I created three xml layout files. index.xml, test.xml, and welcome.xml. Finally, I created a plugin.

class Moon_Layout_Append extends Zend_Controller_Plugin_Abstract{

 public function preDispatch($request){


  $layoutFile = APPLICATION_PATH."/Modules/".$request->module."/layout/".$request->action.".xml";

  $layout = new Zend_Config_Xml($layoutFile,'index');


 }

}

the problem is...how do I access layout object to set content that I read from xml?

+3  A: 

Layout functionality is easily accessed via a Controller Action helper. You should be able to retrieve the layout helper using the following line.

$layout= Zend_Controller_Action_HelperBroker::getStaticHelper('Layout');

If you're not using the Zend_Application or another way of initialising the Layout, you may need to call the following first:

Zend_Layout::startMvc();
David Caunt
if I $layout->header = "test"; and call it in a layout file by $this->layout()->header, it does not show anything. Do you know why?
Moon
Try $view = $layout->getView(); $view->header = 'test'; and then echo $this->header in your layout.
David Caunt
dcaunt // thanks!! $view->layout()->header = "test"; works!! thank you!!
Moon