2

Web プロジェクトで Yii フレームワークを使用しています。現在、いくつかのモジュールがあり、すべてのモジュールに対して 1 つのレイアウトのみを使用したいと考えています。各モジュールのすべてのコントローラー/アクションのレイアウトを決定するために、次のコードを使用しました。

$this->layoutPath = Yii::getPathOfAlias('application.views.layouts');
$this->layout = '//layouts/myLayout';

各モジュールの init() 関数で同じコードを使用してこれを行う他の解決策はありますか? つまり、各アクションで上記の 2 行のコードを記述しなければならないのですが、それでは良くないと思い、コードの行数を減らしたいと考えています。たとえば、次のようにします。

class StaffModule extends CWebModule
{
    public $layout;
    public $layoutPath;
    public function init()
    {
        $this->layoutPath = Yii::getPathOfAlias('application.views.layouts');
                $this->layout = '//layouts/myLayout';
        $this->setImport(array(
            'staff.models.*',
            'staff.components.*',
        ));
    }
}

しかし、うまくいきません。お願い助けて。

4

3 に答える 3

2

使うだけ

$this->layout='//layouts/myLayout';

それなし

$this->layoutPath = Yii::getPathOfAlias('application.views.layouts');

// ルートからの特定の絶対パスを意味するため

于 2013-08-27T02:22:14.217 に答える
0

あなたが init 関数で行っているアプローチは正しい方向です..私は問題があると思います..あなたがlayoutPathすべきではないことを定義しているので//layouts..

$this->layoutPath = Yii::getPathOfAlias('application.views.layouts');
$this->layout = 'myLayout';

これらは必要ありません:

public $layout;
public $layoutPath;
于 2012-10-14T15:39:54.707 に答える
0

私は同様の質問に答えました

複数のモジュールに共通のレイアウトを使用する

解決策は、モジュールの beforeControllerAction にレイアウトを設定することです。それはうまくいくはずです。

于 2013-07-26T15:11:19.563 に答える