Пример. Файл контроллера:
class KslController extends Controller{ public function actionHello($message = 'Приветствую!'){ return $this->render('hello', array('message'=> $message) ); } }Согласно примера- в папке views нужно создать папку ksl, а в ней файл вида - hello.php
actionHello() - действие контроллера;
render() - базовый метод контроллера вызывающий файл вида (hello) и передающий в него указанные переменные.
Это самый простой и популярный способ передачи параметров в файл вида, в котором вывести значение можно обычным способом:
<p><?=$message ?></p>
Но! При передаче параметров методом render в вид, их нельзя будет получить в шаблоне main.php (находится в папке layouts).
Как передать параметры из контроллера в шаблон?!!
1.Из контроллера можно напрямую записать параметр в вид (View Object).
Для этого нужно в действии контроллера до метода render поместить код:
Yii::$app->view->params['test'] = 'готово' ;Т.к. для файла шаблона вызывающий его объект ($this) как и для файла вида - View Object, значение можно получить таким образом:
$this->params['test'];
2. В шаблоне можно получить доступ к контроллеру с помощью $this->context
Поэтому, можно в классе контроллера объявить публичную переменную, например:
public $sidebar;а в действиях контроллера присваивать ей нужное значение, например:
$this->sidebar = true;Теперь значение можно получить в шаблоне (и в виде тоже):
$this->context->sidebar;
- $this в шаблонах ссылается на ВИД.
- $this->context в шаблонах и видах ссылается на контроллер (или другой родительский объект).
- $this->renderPartial – вызов вида для действия контроллера не используя общий шаблон
- $html = $this->renderPartial – сохранение вида в переменную вместо ее вывода