2010-09-30 4 views
3

J'ai une Zend_Dojo_Form que j'ai déplacée de ma vue (où cela fonctionne bien) à ma mise en page, car c'est quelque chose qui sera utile sur chaque page. Cependant, dans la mise en page, le formulaire ne fonctionne plus - aucun des éléments dijit n'apparaît et il se comporte comme le ferait un formulaire HTML normal.Zend_Dojo_Form dans une mise en page

est ici la partie pertinente de mon bootstrap:

protected function _initView() 
{ 
    Zend_Layout::startMvc(array(
     'layoutPath' => '../application/layouts', 
     'layout' => 'default' 
    )); 

    $view = new Zend_View(); 
    $view->setEncoding('UTF-8') 
     ->doctype('HTML5'); 

    // init Dojo 
    Zend_Dojo::enableView($view); 
    $view->dojo()->enable() 
       ->setCdnVersion('1.5') 
       ->requireModule('dojo.data.ItemFileWriteStore') 
       [...] 
       ->addStyleSheetModule('dijit.themes.tundra'); 

    // assign the view to the viewRenderer, so it will be used by the MVC actions 
    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer'); 
    $viewRenderer->setView($view); 

    return $view; 
} 

il n'y a pas d'erreurs (JS ou ZF), la forme ne fonctionne pas comme il devrait.

Je suppose que j'ai besoin de Dojo activer la vue Mise en page d'une certaine façon. J'ai essayé de changer la partie de mise en page de la méthode de bootstrap ci-dessus à ceci:

$layout = Zend_Layout::startMvc(array(
    'layoutPath' => '../application/layouts', 
    'layout' => 'default' 
)); 
$view = $layout->getView(); 
Zend_Dojo::enableView($view); 
$layout->setView($view); 

mais cela n'a fait aucune différence.

J'ai trouvé this question qui semble très similaire à mon problème, mais la réponse acceptée ne montre que l'aide de dojo dans la mise en page, ce que je fais déjà.

Répondre

4

Ceci est très probablement dû à ce que vous avez la mise en page comme suggéré dans la documentation:

<?php echo $this->doctype() ?> 
    <html> 
    <head> 
     <?php echo $this->headTitle() ?> 
     <?php echo $this->headMeta() ?> 
     <?php echo $this->headLink() ?> 
     <?php echo $this->headStyle() ?> 
    <?php if ($this->dojo()->isEnabled()){ 
     $this->dojo()->setLocalPath('/js/dojo/dojo.js') 
        ->addStyleSheetModule('dijit.themes.tundra'); 
     echo $this->dojo(); 
    } 
    ?> 
     <?php echo $this->headScript() ?> 
    </head> 
    <body class="tundra"> 
     <?php echo $this->layout()->content ?> 
     <?php echo $this->inlineScript() ?> 
    </body> 
    </html> 

Le problème est le doit être après la $ this-> forme echo $ this-> dojo() -> render() sinon les modules requis n'auront pas été enregistrés dans Zend_Dojo.

Questions connexes