Intereting Posts
Процент символа в URI CodeIgniter автоматически заполнять список с помощью ajax mysql и javascript PHP заполняет данные из базы данных при выборе района Неправильная ориентация Jcrop от загрузки Iphone, как я могу это сделать? laravel 5.2 действительный запрос ajax вставлять выбранные данные в качестве внешнего ключа и SQLSTATE : нарушение ограничения целостности: 1048 Confusion PDO-only проблема: невозможно подключиться через сокет / Access denied / не удается подключиться к серверу (общий хост) Как я могу получить имя файла DirectoryIndex для данного URI с помощью PHP? Могу ли я использовать частные методы экземпляра в качестве обратных вызовов? Как получить значение переменной jQuery в файле PHP mysql_fetch_assoc () ожидает, что параметр 1 будет ресурсом, boolean задан в C: \ xampp \ htdocs \ qcc \ truckdelivery.php в строке 9 не выбрана база данных Как установить текстовое значение SimpleXmlElement без использования его родительского элемента? Передача массивов через Ajax / JSON без JQuery Плагин проверки JQuery не отправляет данные POST ArrayCollection: извлечение коллекции в форме

Как передать параметр из контроллера в макет в YII2

Я хочу отправить параметр с контроллера на макет (т.е. main.php). Но я не могу получить параметр в main.php

Я пытался:

Код контроллера:

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

И вот как я пытался это сделать в макете, т.е. main.php

  1. $this->param (как в yii 1)
  2. $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 .

Я хотел бы предложить вам несколько шагов для решения этой проблемы.

  1. параметр pass для просмотра файла
  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"]; }