在Yii2.0版本中中,如何從控制器裏面傳遞變量到佈局文件layouts裏的模板中

關於在Yii1.x的版本中變量的傳遞可以查看這個:在Yii框架中,控制器如何傳遞變量給layouts裏的模板,下面說說在Yii2.0中的實現方法。

在Yii2.0中,view模板文件裏面的$this已經不是對應的控制器對象了,而是View對象的變量。我們可以通過View對象中的params變量來傳遞數據。

先獲取當前View,然後給view設置參數,


class SiteController extends Controller
{
       

       public function actionIndex()
       {
               //設置當前view的params參數,
               $view = Yii::$app->view;
               $view->params['layoutData']='test';
               
               return $this->render('index');
       }
}

在layouts/main.php


<?php
use yii\helpers\Html;
use yii\bootstrap\Nav;
use yii\bootstrap\NavBar;
use yii\widgets\Breadcrumbs;
use frontend\assets\AppAsset;
use frontend\widgets\Alert;

/**
* @var \yii\web\View $this
* @var string $content
*/
AppAsset::register($this);
?>
<?php $this->beginPage() ?>
<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>">
<head>
       <meta charset="<?= Yii::$app->charset ?>"/>
       <title><?= Html::encode($this->title) ?></title>
       <?php $this->head() ?>
</head>
<body>
       <?php $this->beginBody() ?>
       
       <?php echo $this->params['layoutData']?>

..............

view裏面的$this由控制器對象變爲View對象是其中的一個大改變,這樣整個框架也更清晰了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章