更改脚本路径调用视图动作帮助器

时间:2012-11-09 14:16:22

标签: zend-framework zend-view

我想为我的应用程序中的每个模块创建不同的视图脚本。我的结构看起来像那样:

-- application
    -- modules
       -- default
          -- views
             -- default
                -- scripts
             -- fluid
                --scripts

我在Zend Controller Plugin中设置默认脚本路径,其中preDispatch()随请求执行:

$view->setScriptPath(sprintf('%s/modules/%s/views/%s/scripts', APPLICATION_PATH, $module, $views));

一切都很有效,直到我从视图中调用动作:

$this->action('activity-stream', 'index', 'observation');

应用程序抛出一条带有消息的异常:

  路径中找不到

脚本'index / activity-stream.phtml'(C:/ wamp / www / erp / application / modules / observation / views \ scripts /; C:\ wamp \ www \ erp \ application / modules /用户/视图/流体/脚本/)

看起来,当使用View Action Helper调用模块时,未正确设置脚本路径。知道如何实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

问题没有解决,但我以不同的方式对待我想要的东西。我的应用程序的任何模块中的每个控制器都继承了继承Zend_Controller_Action的自定义操作控制器。在那个自定义控制器里面我有这样的东西:

public function init() {
    parent::init();
    $module = $this->_request->getModuleName();
    $config = new Zend_Config_Ini(APPLICATION_PATH . "/configs/modules.ini", $module);
    $layout = isset($config->layout) ? $config->layout : 'default';
    $views = isset($config->views) ? $config->views : 'default';
    $this->view->layout()->setLayout($layout);
    $this->view->setScriptPath(sprintf('%s/modules/%s/views/%s/scripts', APPLICATION_PATH, $module, $views));
}

这不是我想要的,但解决了我的问题。