Как в событии передать/поменять переменную во view

Приветствую.

Как можно поменять/добавить переменные, передаваемые во view, в событии "View::EVENT_BEFORE_RENDER"?

Есть простой экшен:




public function testAction()

{

    ...

    return $this->render('test', [

        'foo' => 'test',

        'bar' => 123,

    ]);

}



В каком нибудь месте есть перехват события:




\Yii::$app->view->on(View::EVENT_BEFORE_RENDER, function($event) {

    // Как бы тут поменять переменные "$foo" и/или "$bar" или добавить свои?

});



В объекте $event есть параметр $params с этими переменными. Но толку их менять никакого. Ни на что не влияет.

Есть возможность передать во view переменную так:




$event->sender->params['key'] = 'value';



После чего в шаблоне обращаться к ней через:




$this->params['key']



Но это не то, чего хотелось бы. Главное, нужна возможность менять уже переданные во view переменные.

нет это не возможно




 if ($this->beforeRender($viewFile, [b]$params[/b])) {

Yii::trace("Rendering view file: $viewFile", __METHOD__);

$ext = pathinfo($viewFile, PATHINFO_EXTENSION);

if (isset($this->renderers[$ext])) {

if (is_array($this->renderers[$ext]) || is_string($this->renderers[$ext])) {

$this->renderers[$ext] = Yii::createObject($this->renderers[$ext]);

}

/* @var $renderer ViewRenderer */

$renderer = $this->renderers[$ext];

$output = $renderer->render($this, $viewFile, $params);

} else {

$output = $this->renderPhpFile($viewFile, [b]$params[/b]);



нет возможности заменить переменные

если переменные будут объектами то можно переконфигурировать их




$event->sender->params['key']->some = 'value';



Блин. Была надежда, да сплыла. Благодарствую.

Одним из решений можно сделать класс со статическими переменными и им оперировать внутри экшена и внутри обработчка события. Ну и в шаблоне соответственно его же и использовать.