如何将控制器中的parameter passing给YII2中的布局
我想从控制器发送一个参数到布局(即main.php)。 但是我无法获得main.php中的参数
我试过了:
控制器代码:
$this->render('index',array('param' => $paramValue));
这就是我试图得到这个布局即如此。 main.php
-
$this->param
(如yii 1) -
$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议你一些这个问题的步骤。
- 通过参数查看文件
- 设置参数查看参数
-
检查参数和如果存在然后使用它。
//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"]; }