如何将控制器中的parameter passing给YII2中的布局

我想从控制器发送一个参数到布局(即main.php)。 但是我无法获得main.php中的参数

我试过了:

控制器代码:

$this->render('index',array('param' => $paramValue)); 

这就是我试图得到这个布局即如此。 main.php

  1. $this->param (如yii 1)
  2. $param

但是我不能在布局中获得参数值。 谁能告诉我如何做到这一点?

yii \ base \ View有特殊的$ params属性。

例如,它用于在Gii默认生成的CRUD代码模板中构build面包屑。

你可以在渲染之前像这样设置它:

 use Yii; Yii::$app->view->params['customParam'] = 'customValue'; 

在控制器内部,你可以像这样设置:

 $this->view->params['customParam'] = 'customValue'; 

然后它将在视图(包括主要布局)中可用:

 /* @var $this yii\web\View */ echo $this->params['customParam']; 

你也可以在官方指南中find它。

直接调用$参数你应该得到的价值,尝试

 in controller declare a $param, public $param = ''; then in the acction do $param='haha'; in layout echo $this->param; 

那是因为你正在渲染index.php视图,而不是main.php视图。

$param这是你如何得到它在1.1版本。

UPD:如果你想在你的main.php布局中声明一个参数在你的Controller类中,那么你将能够通过这种方式得到$this->param

UPD2:看起来像2.0版本,你需要在yii \ web \ View类中声明参数。 并通过Yii::$app->view->param

我想build议你一些这个问题的步骤。

  1. 通过参数查看文件
  2. 设置参数查看参数
  3. 检查参数和如果存在然后使用它。

     //in controller method $this->render("view-file-name",["paramName" => "some parameter"]); //in view file for eg: index.php //i'm passing paremeter sent form controller's action to view params. $this->params["paramFromViewFile"] = $paramName; //here $paramName is the parameter we sent from controller's method //access parameter sent from view file if($this->params && !empty($this->params["paramFromViewFile"])) { echo $this->params["paramFromViewFile"]; }