-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.
Faut-il vraiment appeler votre contrôleur 'forme'? Et si vous vous retrouviez avec deux contrôleurs de formulaires? –
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