28.3. Zend_Layout Configuration Options

Zend_Layout has a variety of configuration options. These may be set by calling the appropriate accessors, passing an array or Zend_Config object to the constructor or startMvc(), passing an array of options to setOptions(), or passing a Zend_Config object to setConfig().

[Note] helperClass and pluginClass must be passed to startMvc()

In order for the helperClass and pluginClass settings to have effect, they must be passed in as options to startMvc(); if set later, they have no affect.

28.3.1. Examples

The following examples assume the following $options array and $config object:

$options = array(
    'layout'     => 'foo',
    'layoutPath' => '/path/to/layouts',
    'contentKey' => 'CONTENT',           // ignored when MVC not used
);
/**
[layout]
layout = "foo"
layoutPath = "/path/to/layouts"
contentKey = "CONTENT"
*/
$config = new Zend_Config_Ini('/path/to/layout.ini', 'layout');

Example 28.1. Passing options to the constructor or startMvc()

Both the constructor and the startMvc() static method can accept either an array of options or a Zend_Config object with options in order to configure the Zend_Layout instance.

First, let's look at passing an array:

// Using constructor:
$layout = new Zend_Layout($options);

// Using startMvc():
$layout = Zend_Layout::startMvc($options);

And now using a config object:

$config = new Zend_Config_Ini('/path/to/layout.ini', 'layout');

// Using constructor:
$layout = new Zend_Layout($config);

// Using startMvc():
$layout = Zend_Layout::startMvc($config);

Basically, this is the easiest way to customize your Zend_Layout instance.


Example 28.2. Using setOption() and setConfig()

Sometimes you need to configure the Zend_Layout object after it has already been instantiated; setOptions() and setConfig() give you a quick and easy way to do so:

// Using an array of options:
$layout->setOptions($options);

// Using a Zend_Config object:
$layout->setConfig($options);

Note, however, that certain options, such as pluginClass and helperClass, will have no affect when passed using this method; they need to be passed to the constructor or startMvc() method.


Example 28.3. Using Accessors

Finally, you can also configure your Zend_Layout instance via accessors. All accessors implement a fluent interface, meaning their calls may be chained:

$layout->setLayout('foo')
       ->setLayoutPath('/path/to/layouts')
       ->setContentKey('CONTENT');