Я хочу отправить параметр с контроллера на макет (т.е. main.php). Но я не могу получить параметр в main.php
Я пытался:
Код контроллера:
$this->render('index',array('param' => $paramValue));
И вот как я пытался это сделать в макете, т.е. main.php
$this->param
(как в yii 1) $param
Но я не могу получить значение параметра в макете. Может ли кто-нибудь сказать мне, как это сделать?
yii \ base \ View имеет специальное свойство $ params .
Например, он используется для создания панировочных сухарей в шаблонах кода CRUD по умолчанию с Gii.
Вы можете установить его так, как это сделать перед рендерингом:
use Yii; Yii::$app->view->params['customParam'] = 'customValue';
Внутри контроллера вы можете установить его так:
$this->view->params['customParam'] = 'customValue';
Затем он будет доступен в виде (включая основной макет):
/* @var $this yii\web\View */ echo $this->params['customParam'];
Вы также можете найти его в официальном руководстве .
прямой вызов $ param u должен получить значение, попробуйте
in controller declare a $param, public $param = ''; then in the acction do $param='haha'; in layout echo $this->param;
-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
.
Я хотел бы предложить вам несколько шагов для решения этой проблемы.
Проверьте параметр, а если есть, используйте его.
//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"]; }