2017-01-16 15 views
0

多くのプロジェクトでYii1を使用しています。 ほとんどの場合、$ this-> bodyClassというビューで使用した$ bodyClassというメインコントローラのプロパティがありました。Yii2のメインコントローラ(またはビュー)の拡張

Yii2では、$はコントローラの代わりにビューを参照します。また、すべてのYii2コン​​トローラーで使用されているベースコントローラーは、アプリケーション上ではなくyiiフォルダー内にあります。

私がしようとしていることを達成する最良の方法は何ですか? a)自分のコンポーネント/ BaseControllerを作成する。私のすべてのコントローラはそれを継承し、$ this-> context-> propertyとしてビュー内のプロパティにアクセスします。 b)ViewComponentの拡張

利点と欠点?または私のアプローチは完全に間違っていますか?

答えて

0

あなたは、このようなビューにコントローラ内の任意の変数を渡すことができるようにViewクラスは、$paramsという名前のプロパティを持っています

$this->view->params['param'] = 'value'; 

私がしようとすると、ビュー

/* @var $this yii\web\View */ 

echo $this->params['param']; 
+0

にアクセスする。しかし変数へのアクセスは常にif(isset($ this-> params ['param'])....存在するかどうかを確認する必要があります。コントローラのアプローチでyii1を使用したとき、nullに変数を初期化しました。 – Chux

+0

これらのパラメータは、config/params.phpの他のパラメータの中で定義することができます –

関連する問題