2010-02-04 15 views
0

J'avais commencé à placer mes scripts de vue d'élément de formulaire sous '/ application/views/scripts/form /' et j'étais capable de les référencer par 'form/scriptname.phtml', mais maintenant je besoin de faire un contrôleur de «forme» et je réalise que c'était une solution à courte vue. Les exemples que j'ai vus utilisent quelque chose comme '/ chemin/vers/votre/vue/scripts /' qui ne m'aide pas avec ce qui est un endroit logique/recommandé pour les mettre.Chemin recommandé pour les scripts de vue d'élément de formulaire Zend

Merci!

+0

Faut-il vraiment appeler votre contrôleur 'forme'? Et si vous vous retrouviez avec deux contrôleurs de formulaires? –

+0

Les noms de contrôleurs doivent être uniques, donc je ne suis pas votre question. La question est plus sur le meilleur endroit pour mettre les scripts de vue bien. Peu importe les noms des contrôleurs, je ne pense pas les avoir placés de manière optimale. – Sonny

Répondre

2

-je utiliser la structure de fichiers non standard et les modules utilisent pour mes applications:

/application 
    /default 
    /controllers 
     /IndexController 
     /ErrorController 
    /views 
     /scripts 
     /index 
      /index.phtml 
     /error 
      /error.phtml 
/configs 
    /config.ini 
/library 
    /Zend 
/views 
    /layouts 
    /default.phtml 
    /scripts 
    /form 
     /_text.phtml 

Pour le faire de cette façon, vous devez ajouter le répertoire du module dans votre config pour Zend_Application:

[production] 

phpsettings.display_startup_errors = 0 
phpsettings.display_errors = 0 
resources.layout.layout = "default" 
resources.layout.layoutpath = "c:\xampp\files\views\layouts" 
resources.frontcontroller.moduledirectory = "c:\xampp\files\application" 

[development : production] 

phpsettings.display_startup_errors = 1 
phpsettings.display_errors = 1 

Les chemins de script de vue sont chargés dans l'ordre LIFO. En supposant que vous ne l'avez pas ajouté d'autres chemins de script, vous pouvez ajouter vos chemins de script dans la méthode init() du contrôleur d'action de cette façon:

<?php 

class IndexController extends Zend_Controller_Action { 

    public function init() { 

    $appScriptPath = 'c:\xampp\files\views\scripts'; 
    $modScriptPath = array_shift($this->view->getScriptPaths()); 

    $this->view->setScriptPath(NULL); 

    $this->view->addScriptPath($appScriptPath); 
    $this->view->addScriptPath($modScriptPath); 

    } 

    public function indexAction() { 

    $form = new Zend_Form(); 

    $form->addElement(new Zend_Form_Element_Text('text')); 
    $form->text->setLabel('Text'); 
    $options = array('viewScript' => 'form/_text.phtml'); 
    $decorators = array(array('ViewScript', $options)); 
    $form->text->setDecorators($decorators); 

    $this->view->form = $form; 

    } 

} 

Le système recherchera dans les vues de contrôleur scripts pour votre viewScript d'abord, puis s'il ne le trouve pas, il apparaîtra dans/application/views/scripts.

+0

Pourquoi utilisez-vous un trait de soulignement principal dans votre nom de fichier script de vue? – Sonny

+1

Parce que c'est une convention de nommage ZF pour les scripts partiels ... ce n'est pas particulièrement important mais j'aime suivre les conventions de nommage autant que possible. –