如何在 YII2 中将参数从控制器传递到布局

2022-08-30 10:16:14

我想将参数从控制器发送到布局(即主.php)。但是我无法在main中获取参数.php

我试过了:

控制器代码:

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

这就是我试图在布局中得到它的方式,即。主要.php

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

但是我无法在布局中获得参数值。谁能告诉我怎么做?


答案 1

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

例如,它用于使用 Gii 在默认生成的 CRUD 代码模板中构建痕迹导航。

您可以在渲染之前按如下方式进行设置:

use Yii;

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

在控制器内部,您可以按如下方式进行设置:

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

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

/* @var $this yii\web\View */

echo $this->params['customParam'];

您也可以在官方指南中找到它。


答案 2

我想建议您针对此问题采取一些步骤。

  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"];  
    }
    

推荐