Php 如何在YII2中将参数从控制器传递到布局
我想将一个参数从控制器发送到布局(即main.php)。但是我无法在main.php中获取参数 我试过: 控制器代码:Php 如何在YII2中将参数从控制器传递到布局,php,yii2,Php,Yii2,我想将一个参数从控制器发送到布局(即main.php)。但是我无法在main.php中获取参数 我试过: 控制器代码: $this->render('index',array('param' => $paramValue)); 这就是我如何在布局ie.main.php中实现的 $this->param(如yii 1所示) $param 但我无法在布局中获取参数值。有人能告诉我怎么做吗?这是因为您正在呈现index.php视图,而不是main.php视图 而$param这就是在1.1
$this->render('index',array('param' => $paramValue));
这就是我如何在布局ie.main.php中实现的
$this->param
(如yii 1所示)$param
但我无法在布局中获取参数值。有人能告诉我怎么做吗?这是因为您正在呈现
index.php
视图,而不是main.php
视图
而$param
这就是在1.1版本中获得它的方式
UPD:如果您希望在main.php
布局中有一个参数,请在Controller
类中声明它,然后您就可以通过这种方式获得它
UPD2:看起来在2.0版本中,您需要在yii\web\View类中声明param。并通过
Yii::$app->view->param
直接调用$param u访问它,应该会得到值,请尝试
in controller declare a $param,
public $param = '';
then in the acction do
$param='haha';
in layout
echo $this->param;
具有特殊的性质
例如,它用于使用Gii在默认生成的CRUD代码模板中构建面包屑
在渲染之前,可以这样设置:
use Yii;
Yii::$app->view->params['customParam'] = 'customValue';
在控制器内,您可以如下设置:
$this->view->params['customParam'] = 'customValue';
public $title = 'My custom title';
$this->context->title
然后它将在视图(包括主布局)中可用:
您也可以在中找到它。我想建议您解决此问题的一些步骤
//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"];
}
我也有同样的问题,我通过以下方式解决:
<强>在我的控制器PAR中,我做的是< /强>
$this->view->params['typeUser']='Internaut'代码>
在我看来
$this->params['typeUser']或echo$this->params['typeUser']
在Yii2中,您可以使用$this->context
从视图访问控制器对象,例如,如果在控制器中设置如下参数:
$this->view->params['customParam'] = 'customValue';
public $title = 'My custom title';
$this->context->title
然后在布局中,您可以这样阅读:
$this->view->params['customParam'] = 'customValue';
public $title = 'My custom title';
$this->context->title
Yii文档第节对此进行了解释:main.php是主布局文件。我们永远不需要呈现该文件。我已经尝试过这个方法,并且出现了如下错误:“获取未知属性:yii\web\View::param”您应该重新阅读手册并查看->beginContent()
方法。您可以使用$this->context来执行此操作。查看我的答案:使用$this->controller->param