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 に答える