Zend framework Zend表单元素视图脚本的建议路径
我开始将表单元素视图脚本放在“/application/views/scripts/form/”下,并能够通过“form/scriptname.phtml”引用它们,但现在我需要制作一个“form”控制器,我意识到这是一个短视的解决方案。我看到的示例使用了类似于“/path/to/your/view/scripts/”的内容,但这并不能帮助我确定放置它们的合理/推荐位置Zend framework Zend表单元素视图脚本的建议路径,zend-framework,zend-form,zend-form-element,Zend Framework,Zend Form,Zend Form Element,我开始将表单元素视图脚本放在“/application/views/scripts/form/”下,并能够通过“form/scriptname.phtml”引用它们,但现在我需要制作一个“form”控制器,我意识到这是一个短视的解决方案。我看到的示例使用了类似于“/path/to/your/view/scripts/”的内容,但这并不能帮助我确定放置它们的合理/推荐位置 谢谢 我的应用程序使用非标准文件结构和模块: /application /default /controllers
谢谢 我的应用程序使用非标准文件结构和模块:
/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_应用程序的配置中添加模块目录:
[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
视图脚本路径按后进先出顺序加载。假设未添加任何其他脚本路径,则可以通过以下方式在action controller 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;
}
}
您真的需要调用控制器“表单”吗?如果你最后有两个表单控制器呢?控制器名称必须是唯一的,所以我不明白你的问题。问题更多的是关于放置视图脚本的最佳位置。不管控制器名称如何,我认为我没有将它们放在最佳位置。为什么在视图脚本文件名中使用前导下划线?因为这是部分脚本的ZF命名约定。。。这并不特别重要,但我喜欢尽可能遵循命名约定。