2016-05-25 30 views
1

私のアプリケーションにバックエンドとフロントエンドの両方に登録する製品モジュールがあります。ユーザーがフロントエンドアプリケーションから製品モジュールにアクセスした場合に達成したいと思います。レイアウト/myproject/frontend/web/views/layouts/main.php私は/myproject/frontend/web/views/layouts/productLayout.phpをレンダリングしたいとしましょう。管理者がバックエンドアプリケーションから製品モジュールにアクセスする場合は、/myproject/backend/web/views/layouts/main.phpをレンダリングします。私のコードを変更することなく、バックエンドアプリケーションで/myproject/backend/web/views/layouts/main.phpを使用すると完璧に動作しますが、フロントエンドでは/ myproject/frontend/web/views/layoutsを使用するとうまく動作しません/myproject/backend/web/views/layouts/productLayout.phpの代わりに/main.phpを使用します。任意の ...私は製品モジュールのデフォルトコントローラに私のコードでyii2でレイアウトを変更する方法

public $productLayout = '@frontend/views/layouts/productLayout'; 
public function actionIndex() 
{ 
    $this->layout = $this->productLayout; 
} 

これを試み、それがフロントエンドで完璧に動作しますが、私は、バックエンドからアクセスしようとすると、それはフロントエンドのレイアウトファイルをロードすると、それは動作しません。これは助けになるでしょう。

+0

アプリケーションに応じて2つの異なるレイアウトが必要なようです。これは必要なものですか? – scaisEdge

+0

はい私はバックエンドのアプリケーションに応じて、アプリケーションに応じてフロントエンドのアプリケーションとバックエンドのアプリケーションの2つの異なるレイアウトが必要 – sam

+0

私は提案との回答を掲載しました – scaisEdge

答えて

1

アプリケーションIDをテストして(最終的にconfig/main.phpに適切な一意の名前を付けて)、必要なレイアウトを設定することができます。

public function actionIndex() 
{ 
    if (Yii::$app->name == 'my_id_for_backend') { 
    $this->layout == '@backend/views/layouts/main'; 
    } else { 
     $this->layout ='@frontend/views/layouts/productLayout'; 
    } 
} 
+0

これは感謝の男 – sam

関連する問題