How can we use Dojo in Zend?
Dojo is one kind of resources in Zend and it can be initiated by bootstrap. (Here leaves us a question: what kinds of stuff can be treated as resource in Zend?)
public function getDojo()
{
if (null === $this->_dojo) {
$this->getBootstrap()->bootstrap('view');
$view = $this->getBootstrap()->view;
Zend_Dojo::enableView($view);
$view->dojo()->setOptions($this->getOptions());
$this->_dojo = $view->dojo();
}
return $this->_dojo;
}
Understand Zend_Dojo and Dojo view helpers:
1> Enable Dojo;
public static function enableView(Zend_View_Interface $view)
{
if (false === $view->getPluginLoader('helper')->getPaths('Zend_Dojo_View_Helper')) {
$view->addHelperPath('Zend/Dojo/View/Helper', 'Zend_Dojo_View_Helper');
}
}
2> Enable Form Helpers;
public static function enableForm(Zend_Form $form)
{
$form->addPrefixPath('Zend_Dojo_Form_Decorator', 'Zend/Dojo/Form/Decorator', 'decorator')
->addPrefixPath('Zend_Dojo_Form_Element', 'Zend/Dojo/Form/Element', 'element')
->addElementPrefixPath('Zend_Dojo_Form_Decorator', 'Zend/Dojo/Form/Decorator', 'decorator')
->addDisplayGroupPrefixPath('Zend_Dojo_Form_Decorator', 'Zend/Dojo/Form/Decorator')
->setDefaultDisplayGroupClass('Zend_Dojo_Form_DisplayGroup');
foreach ($form->getSubForms() as $subForm) {
self::enableForm($subForm);
}
if (null !== ($view = $form->getView())) {
self::enableView($view);
}
}
3>Dojo Helpers;
public function dojo()
{
return $this->_container;
}
public function __construct()
{
$registry = Zend_Registry::getInstance();
if (!isset($registry[__CLASS__])) {
#require_once 'Zend/Dojo/View/Helper/Dojo/Container.php';
$container = new Zend_Dojo_View_Helper_Dojo_Container();
$registry[__CLASS__] = $container;
}
$this->_container = $registry[__CLASS__];
}
The following parts are Zend_Dojo_View_Helper_Dojo_Container class's story.