1

我想为我的应用程序中的每个模块创建不同的视图脚本。我的结构是这样的:

-- 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/user/视图/流体/脚本/)

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

4

1 回答 1

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));
}

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

于 2012-11-28T11:21:11.263 回答