У меня странная проблема: в прошлом я использовал Zend Dojo и Zend Form, чтобы добиться большого эффекта, но в моем последнем проекте Zend_Dojo отказывается включать, если его не заставляют просматривать, и даже тогда не будет импортируйте соответствующие библиотеки для используемых мной диджитов. Вот соответствующий код:
Bootstrap.php:
protected function _initViewHelpers() {
$this->bootstrap('layout');
$layout = $this->getResource('layout');
$view = $layout->getView();
$view->addHelperPath('Zend/Dojo/View/Helper/', 'Zend_Dojo_View_Helper');
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
$viewRenderer->setView($view);
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
$view->doctype('XHTML1_TRANSITIONAL');
$view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
$view->headLink()->appendStylesheet('base.css');
}
IndexController.php (отрывок из других не связанных материалов)
public function renderAction() {
$this->_helper->layout->setLayout('render');
//SNIP
if ($this->getRequest()->getParam("medialeadsource"))
{
$source = $this->getRequest()->getParam("medialeadsource");
$mls = $this->sourceService->getSourceByURI($source);
$this->view->source = $mls;
$form = new App_forms_Sweepstakes($mls->__get('id'), $mls->__get('layout'));
$this->view->form = $form;
switch($mls->__get('template')) {
case '1':
$this->_helper->viewRenderer('template-1');
break;
case '2':
$this->_helper->viewRenderer('template-2');
break;
case '3':
$this->_helper->viewRenderer('template-3');
break;
default:
$this->_helper->viewRenderer('template-1');
break;
}
$this->view->test = $this->sourceService->isURISlideshow($source);
$this->view->subheadline = $mls->__get('subheadline');
$this->view->body = $mls->__get('body');
Zend_Dojo::enableView($this->view);
Zend_Dojo::enableForm($form);
Zend_Dojo_View_Helper_Dojo::setUseDeclarative();
//SNIP
}
И из template-1.phtml (единственное представление, которое я до сих пор настраивал для Dojo. Также обратите внимание, что для этих конкретных представлений сам макет лишен какого-либо собственного содержимого и поэтому не влияет на вопросы). Я только включаю соответствующую часть, опять же:
<?php
$this->dojo()->setDjConfigOption('usePlainJson',true)
->addStylesheetModule('dijit.themes.tundra');
echo $this->dojo();
?>
</head>
<body class="tundra">
Сгенерированный код выглядит следующим образом:
<title>Test View Title</title>
</head>
<body class="tundra">
Так что, очевидно, ничего не происходит .. Если я добавлю -> enable () для цепочки dojo в представлении, вот что я получаю:
<script type="text/javascript" src="primaryFunctions1.js"></script>
<style type="text/css">
<!--
@import "http://ajax.googleapis.com/ajax/libs/dojo/1.2.0/dijit/themes/tundra/tundra.css";
-->
</style>
<script type="text/javascript">
//<![CDATA[
var djConfig = {"usePlainJson":true,"parseOnLoad":true};
//]]>
</script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.2.0/dojo/dojo.xd.js"></script>
<title></title>
</head>
<body class="tundra">
Так что до сих пор нет диджитного импорта. Я в растерянности!