2017-01-16 52 views
0

我曾在很多項目中使用過Yii1。 在其中大多數情況下,我們在主控制器中有一個名爲$ bodyClass的屬性,我們在視圖中將它用作$ this-> bodyClass。在Yii2中擴展主控制器(或視圖)

在Yii2中,$ this引用視圖而不是控制器。而且,所有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中的其他參數中定義這些參數 –