2010-01-13 19 views
1

假设我已经厌倦了将我的页面模板文件夹放在视图/脚本下,并希望将它们置于视图之下,而忽略了路径的“脚本”部分。我如何改变ZendFramework的配置以允许我这样做?如何消除views/scripts文件夹?

回答

2

尝试以下操作:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{ 

// ... 

    protected function _initView() 
    { 
     // Initialise the view 
     $view = new Zend_View(); 
     $view->addScriptPath(APPLICATION_PATH.'/views'); 

     // set the configured view as the view to be used by the view renderer. 
     $renderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer'); 
     $renderer->setView($view); 

     return $view; 
    } 

// ... 

} 

以前的答案是丢失,您可以设置您已配置有额外的脚本路径视图渲染视图的一部分。

HTH。

+0

它确实有帮助!真棒!谢谢。 – Volomike 2010-01-14 03:15:05

+0

很高兴它做到了,欢迎您:) – rvdavid 2010-01-14 05:23:56

+0

我的错。我以为他知道如何做到这一点。 – Gordon 2010-01-14 08:22:42

1

ZF Manual for Zend_View并把这个在你的引导:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{ 
    protected function _initView() 
    { 
     $view = new Zend_View(); 
     $view->setScriptPath('/some/new/path'); // overwrite any paths 
     $view->addScriptPath('/some/other/path'); // adds additional paths 
     $view->setEncoding('UTF-8'); 
     $view->doctype('XHTML1_STRICT'); 
     $view->headMeta()->appendHttpEquiv(
      'Content-Type', 'text/html;charset=utf-8' 
     ); 
     $viewRenderer = 
     Zend_Controller_Action_HelperBroker::getStaticHelper(
      'ViewRenderer' 
     ); 
     $viewRenderer->setView($view); 
     return $view; 
    } 
} 

configure your Ini for use with Zend_Application_Resource_View

resources.view.encoding = "UTF-8" 
resources.view.basePath = APPLICATION_PATH "/views/scripts" 
... 

注意,选择的基本路径假设的目录结构:也该

base/path/ 
    helpers/ 
    filters/ 
    scripts/ 

tutorial by Padraic Brady

+0

有没有办法在一个项目上做到这一点全球化,这样我就不需要在控制器的每个类方法中都添加这个了? – Volomike 2010-01-13 18:39:44

+0

是的。查看我的添加将它放入Ini – Gordon 2010-01-13 18:40:19

+0

我将INI建议设置为“/ views”而不是“/ views/scripts”,然后在“production”下的configs/application.ini中尝试。它没有工作和错误寻找“脚本”。 – Volomike 2010-01-13 18:47:20