2010-02-04 59 views
0

我已经开始在'/ application/views/scripts/form /'下放置我的表单元素视图脚本,并能够通过'form/scriptname.phtml'引用它们,但现在我需要制作一个'表格'控制器,我意识到这是一个短视的解决方案。我见过的例子使用了'/ path/to/your/view/scripts /'这样的东西,它并不能帮助我理解什么是逻辑推荐的地方。Zend表单元素视图脚本的推荐路径

谢谢!

+0

你真的不得不打电话给你的控制器'表'吗?如果你最终有两个表单控制器呢? – 2010-02-04 19:46:30

+0

控制器名称必须是唯一的,所以我不会按照你的问题。问题是关于放置视图脚本的最佳位置。无论控制器名称如何,我都不认为我已将它们放在最佳状态。 – Sonny 2010-02-04 20:28:12

回答

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顺序加载。假设你没有添加任何其他脚本路径,你可以在动作控制器初始化添加脚本路径()方法是这样的:

<?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控制器意见的脚本,然后再如果它没有找到它,它会查找/应用程序/视图/脚本。

+0

为什么在视图脚本文件名中使用前导下划线? – Sonny 2010-02-05 14:20:00

+1

因为这是一个ZF命名约定的部分脚本...它不是特别重要,但我喜欢尽可能遵循命名约定。 – 2010-02-05 18:51:04