在Yii2.0版本中中,如何从控制器里面传递变量到布局文件layouts里的模板中

关于在Yii1.x的版本中变量的传递能够查看这个:在Yii框架中,控制器如何传递变量给layouts里的模板,下面说说在Yii2.0中的实现方法。php

在Yii2.0中,view模板文件里面的$this已经不是对应的控制器对象了,而是View对象的变量。咱们能够经过View对象中的params变量来传递数据。

先获取当前View,而后给view设置参数,html


class SiteController extends Controller
{
       

       public function actionIndex()
       {
               //设置当前view的params参数,
               $view = Yii::$app->view;
               $view->params['layoutData']='test';
               
               return $this->render('index');
       }
}web

在layouts/main.phpbootstrap


<?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']?>

..............app

view里面的$this由控制器对象变为View对象是其中的一个大改变,这样整个框架也更清晰了。框架

相关文章
相关标签/搜索