Yii adapter

Yii adapter

Installation

Bootstrap code:

index.php
<?php
/**
 * Initialize Dwoo wraper:
 *
 * compile_dir and cache_dir can be passed as an assoc-array values
 * to the constructor to change the default path for the directories
 * where the compiled and cached templates are stored
 */
$viewInterface = new Dwoo_Adapters_ZendFramework_View();
 
/**
 * Init new view renderer and bind the wraper to it:
 *
 * More info about the ViewRenderer:
 * http://framework.zend.com/manual/en/zend.controller.actionhelpers.html#zend.controller.actionhelpers.viewrenderer
 */
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($viewInterface);
 
/**
 * And add the helper to the controler:
 *
 * More info about the HelperBroker:
 * http://framework.zend.com/manual/en/zend.controller.actionhelpers.html#zend.controller.actionhelper.broker
 */
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);

Some additional tuning

If you don’t want to use .phtml template suffix, you can change it to .tpl (or whatever you want):

<?php
$viewRenderer->setViewSuffix('tpl')

Changing properties of the Dwoo or Dwoo_Compiler objects

You can access the setSomething() methods of the Dwoo and Dwoo_Compiler classes through the configuration array as such:

<?php
$viewInterface = new Dwoo_Adapters_ZendFramework_View(array(
            'engine' => array(
                  'compileDir' => '/path/to/writeable/dir', // calls the $dwoo->setCompileDir() method
                  'cacheDir' => '/path/to/other/writeable/dir' // calls the $dwoo->setCacheDir() method
            ),
            'compiler' => array(
                  'autoEscape' => true // calls $compiler->setAutoEscape()
            )
));

Constructor accepts a configuration array (via setOptions() method) or instance of Zend_Config object (via setConfig() method).
Alternatively you can just provide a custom pre-configured object instead of those settings sub-arrays, see below.

Using your own engine class

You can ask the adapter to use any class that extends Dwoo as its engine (as of 2008/09/12 only SVN version):

<?php
class My_Custom_Engine extends Dwoo
{
    /* Your own code here */
}

Then:

<?php
$viewInterface = new Dwoo_Adapters_ZendFramework_View(array(
            'engine' => 'My_Custom_Engine'
));

Or:

<?php
$engine = new My_Custom_Engine();
$engine -> doSomething();
$engine -> initSomethingElse();
$viewInterface = new Dwoo_Adapters_ZendFramework_View(array(
            'engine' => $engine,
));

In addition, you can set the custom class and set params for it:

<?php
$viewInterface = new Dwoo_Adapters_ZendFramework_View(array(
	'engine' => array(
		  'type' => 'My_Custom_Engine', // an class name or an object
		  'compileDir' => '/path/to/writeable/dir', // calls the setCompileDir() method on the My_Custom_Engine object
		  'cacheDir' => '/path/to/other/writeable/dir' // calls the setCacheDir() method on the My_Custom_Engine object
	)                        
));

View helpers

Dwoo_Adapters_ZendFramework_View supports Zend’s view helpers with the use of Dwoo_Adapters_ZendFramework_PluginProxy. This proxy is bonded to the Dwoo engine and checks for available helpers (headTitle, headLink, url, etc).

Some helper call examples:

index.tpl
<!-- Outputing title -->
{headTitle}
 
<!-- Outputing content in the layout template -->
{layout()->content}
 
 
<!-- Outputing URL from some defined routes -->
{url(array(controller = 'foo', action = 'bar'), 'baz')}