Yii2创建和维护;将变量与视图文件夹作用域一起使用

Yii2创建和维护;将变量与视图文件夹作用域一起使用,yii2,yii2-advanced-app,Yii2,Yii2 Advanced App,我正在尝试创建一个Yii2主题,希望设置一个变量,该变量的作用域为整个views文件夹。对于我使用的单页主题 $assetDir = Yii::$app->assetManager->getPublishedUrl( '@vendor/path/to/assets/folder' ); 在index.php&中,我使用 <img src="<?= $assetDir ?>/img/image.jpg" alt=""> <?= $this-&g

我正在尝试创建一个Yii2主题,希望设置一个变量,该变量的作用域为整个views文件夹。对于我使用的单页主题

$assetDir = Yii::$app->assetManager->getPublishedUrl(
    '@vendor/path/to/assets/folder'
);
index.php
&中,我使用

<img src="<?= $assetDir ?>/img/image.jpg" alt="">
<?= $this->render('_partial.php', ['assetDir' => $assetDir]) ?>
/img/image.jpg“alt=”“>
对于部分,我可以通过使用

<img src="<?= $assetDir ?>/img/image.jpg" alt="">
<?= $this->render('_partial.php', ['assetDir' => $assetDir]) ?>


我现在想在一个有多个页面的主题中做类似的事情&如果不在每个页面中设置
$assetDir
,我想应该在
main.php
布局中设置它。

使用
params
数组,如中所述

视图组件提供可用于在视图之间共享数据的params属性

例如,在“关于”视图中,可以使用以下代码指定面包屑的当前段

$this->params['breadcrumbs'][] = 'About Us';
然后,在布局文件(也是一个视图)中,可以使用随参数传递的数据显示面包屑:

<?= yii\widgets\Breadcrumbs::widget([
'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [],
]) ?>


所以我可以设置一个任意的参数值,比如
$this->params['assetDir']='@path/to/assets'
?可以在主布局中设置并从视图文件中访问吗?这似乎对布局中设置的任意参数不起作用。我只是把
$this->params['wombat']='wombat';
(我是澳洲人,我们喜欢袋熊)在
main.php
中,然后在
index.php
中使用
yii\base\ErrorException未定义索引:wombat
。由于视图是在布局之前呈现的,因此该变量仅从一个视图传递到另一个布局。对于全局共享的变量,我建议使用静态方法或公共控制器属性如果这个项目是我自己学习的,&我想把这个变量放在视图文件中,因为这个项目是在GitHub上发布的。