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

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

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

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

  1. class SiteController extends Controller

  2. {

  3.         


  4.         public function actionIndex()

  5.         {

  6.                 //设置当前view的params参数,

  7.                 $view = Yii::$app->view;

  8.                 $view->params['layoutData']='test';

  9.                 

  10.                 return $this->render('index');

  11.         }

  12. }

复制代码
在layouts/main.php

  1. <?php

  2. use yii\helpers\Html;

  3. use yii\bootstrap\Nav;

  4. use yii\bootstrap\NavBar;

  5. use yii\widgets\Breadcrumbs;

  6. use frontend\assets\AppAsset;

  7. use frontend\widgets\Alert;


  8. /**

  9. * @var \yii\web\View $this

  10. * @var string $content

  11. */

  12. AppAsset::register($this);

  13. ?>

  14. <?php $this->beginPage() ?>

  15. <!DOCTYPE html>

  16. <html lang="<?= Yii::$app->language ?>">

  17. <head>

  18.         <meta charset="<?= Yii::$app->charset ?>"/>

  19.         <title><?= Html::encode($this->title) ?></title>

  20.         <?php $this->head() ?>

  21. </head>

  22. <body>

  23.         <?php $this->beginBody() ?>

  24.         

  25.         <?php echo $this->params['layoutData']?>


  26. ..............

复制代码

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://tranfer.cn/?id=36