Как создать и использовать одну переменную и в layout->main.php и в views(yii2)?

В Yii2 можно создать и использовать одну переменную как в layout/main.php, так и в views. Для этого можно воспользоваться концепцией "Виджеты" и использовать методы самого фреймворка Yii2.

1. Определяем переменную в контроллере
Для начала нужно определить переменную, которую вы хотите использовать как в layout/main.php, так и в views. Это можно сделать в методе вашего контроллера. Например, в методе actionView:

public function actionView($id)
{
    $myVariable = 'Это моя переменная';
    return $this->render('view', [
        'model' => $this->findModel($id),
        'myVariable' => $myVariable,
    ]);
}

2. Вызываем виджет в файле layout/main.php
В файле layout/main.php можно вызвать виджет yiibaseView с помощью метода render и передать в него вашу созданную переменную:

<?php
use yiibaseView;
/* @var $this View */
?>
...
<?= $this->render('_myWidget', ['myVariable' => $myVariable]) ?>
...

3. Создаем виджет в папке views
Теперь создадим виджет _myWidget в папке views, где передадим вашу переменную и отобразим ее на странице:
a) Создайте файл _myWidget.php в папке views и напишите в нем следующий код:

<?php
/* @var $this yiibaseView */
/* @var $myVariable string */
?>
<div><?= $myVariable ?></div>

b) В вашем views/view.php подключите виджет следующим образом:

<?= $this->render('_myWidget', ['myVariable' => $myVariable]) ?>

Теперь ваша переменная доступна и в layout/main.php, и в views, и отображается со значением, которое вы ей задали.