我已经开始将我的表单元素视图脚本放在'/ application / views / scripts / form /'下,并且能够通过'form / scriptname.phtml'引用它们,但现在我需要创建一个'form'控制器我意识到这是一个短视的解决方案。我见过的例子使用了类似'/ path / to / your / view / scripts /'这样的东西,这对我的逻辑/推荐位置没有帮助。
谢谢!
答案 0 :(得分:2)
我使用非标准文件结构并为我的应用程序使用模块:
/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中查找。