我已经开始在'/ application/views/scripts/form /'下放置我的表单元素视图脚本,并能够通过'form/scriptname.phtml'引用它们,但现在我需要制作一个'表格'控制器,我意识到这是一个短视的解决方案。我见过的例子使用了'/ path/to/your/view/scripts /'这样的东西,它并不能帮助我理解什么是逻辑推荐的地方。Zend表单元素视图脚本的推荐路径
谢谢!
我已经开始在'/ application/views/scripts/form /'下放置我的表单元素视图脚本,并能够通过'form/scriptname.phtml'引用它们,但现在我需要制作一个'表格'控制器,我意识到这是一个短视的解决方案。我见过的例子使用了'/ path/to/your/view/scripts /'这样的东西,它并不能帮助我理解什么是逻辑推荐的地方。Zend表单元素视图脚本的推荐路径
谢谢!
我使用非标准的文件结构和使用模块我的应用程序:
/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顺序加载。假设你没有添加任何其他脚本路径,你可以在动作控制器初始化添加脚本路径()方法是这样的:
<?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控制器意见的脚本,然后再如果它没有找到它,它会查找/应用程序/视图/脚本。
为什么在视图脚本文件名中使用前导下划线? – Sonny 2010-02-05 14:20:00
因为这是一个ZF命名约定的部分脚本...它不是特别重要,但我喜欢尽可能遵循命名约定。 – 2010-02-05 18:51:04
你真的不得不打电话给你的控制器'表'吗?如果你最终有两个表单控制器呢? – 2010-02-04 19:46:30
控制器名称必须是唯一的,所以我不会按照你的问题。问题是关于放置视图脚本的最佳位置。无论控制器名称如何,我都不认为我已将它们放在最佳状态。 – Sonny 2010-02-04 20:28:12