J'ai un problème étrange: j'ai utilisé Zend Dojo et Zend Form dans le passé, mais sur mon projet le plus récent, Zend_Dojo refuse d'activer sauf si forcé dans la vue, et même alors, il n'importera pas les bibliothèques appropriées pour les dijits que j'utilise. Voici le code applicable:Pourquoi Zend_Dojo ne va-t-il pas activer/importer correctement?
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 (extrait de quelques autres trucs sans rapport)
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
}
Et à partir du modèle-1.phtml (la seule vue J'ai déjà configuré pour Dojo et notez que pour ces vues spécifiques, la mise en page elle-même est dépourvue de tout contenu et n'a donc pas d'impact sur les choses). Je ne y compris la partie applicable, encore une fois:
<?php
$this->dojo()->setDjConfigOption('usePlainJson',true)
->addStylesheetModule('dijit.themes.tundra');
echo $this->dojo();
?>
</head>
<body class="tundra">
Le code généré est la suivante:
<title>Test View Title</title>
</head>
<body class="tundra">
Alors, évidemment, rien ne se passe .. Si j'ajoute -> activer() au Dojo chaîne dans la vue, voici ce que je reçois:
<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">
Donc toujours pas d'importations de dijit. Je suis à perte!