1

私は実際にZF1でモジュールを作成しようとしていますが、これは本当に「プラグイン」のようになりたいです。メイン アプリケーションは、 の下にあるデフォルトのレイアウトを使用しますdata/current/views/layouts

最初の問題、私のモジュールは、デフォルトで次のレイアウトを使用しますapplication/views/layouts/default.phtml。私が望むのは、他のものを使用することです(上記を参照)。だから私はこれをしました:

public function init() {
    parent::init();
    $layout = Zend_Layout::getMvcInstance();
    $layout->setLayoutPath(DATA_PATH . '/view/layouts');
    $layout->setLayout('common');
}

2 つ目の問題は、このレイアウト ( data/current/views/layouts) では、実際にいくつかの部分ビューをレンダリングしていることです。しかし、モジュールからレイアウトを設定しようとすると、それらのパーシャルが見つからないため、エラーが発生しました (コンテキストのため、モジュール コンテキストからパーシャルをロードしようとしています)。モジュールを機能させるために、これらのパーシャルをモジュールにコピーしたくありません (ダーティでスケーラブルではありません)。問題は、モジュール アクション (コントローラー/アクション) を共通のレイアウトにレンダリングする方法ですが、パーシャル エラーが発生しないことです。

ご協力ありがとうございました

4

1 に答える 1

0

以下は、このように構成したアプリケーションで機能しています。それは完璧に機能しました。

protected function _initLayout(){
    $layout = explode('/', $_SERVER['REQUEST_URI']);

    if(in_array('admin', $layout)){
        $layout_dir = 'admin';
    }else if(in_array('default', $layout)){
        $layout_dir = 'default';
    }else{
        $layout_dir = 'default';
    }
      $options = array(
             'layout'     => 'layout',
             'layoutPath' => APPLICATION_PATH."/modules/".$layout_dir."/views/layouts"
      );
    Zend_Layout::startMvc($options);
}

または、私たちのヘルパーが必要な場合は、試してみることもできます

public function init()
{
     $this->_helper->layout->setLayout('front');
}

もっとお手伝いできることがあれば教えてください。

于 2013-06-13T08:54:16.740 に答える