Я использую нестандартную файловую структуру и использую модули для своих приложений:
/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
Чтобы сделать это таким образом, вы должны добавить каталог модуля в вашей конфигурации для 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
Просмотр путей скриптов загружается в порядке LIFO. Предполагая, что вы не добавили никаких других путей к сценариям, вы можете добавить свои пути к сценариям в методе действия контроллера init () следующим образом:
<?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;
}
}
Система сначала будет искать в скриптах представлений контроллера ваш viewScript, а затем, если не найдет его, она будет выглядеть в /application/views/scripts.
.