我正在用 php Yii2 开发 Web 应用程序。我在 layouts/header.php 中有一个变量我想在 site/index.php 中访问它我的代码:(layouts/header.php)switch ($sub_ext) { case "ksa": $cvalue = array_diff( $country_array, array("Saudi Arabia") ); $avalue = "Saudi Arabia"; break; case "kuwait": $cvalue = array_diff( $country_array, array("Kuwait") ); $avalue = "Kuwait"; break; default: $cvalue = array_diff( $country_array, array("UAE") ); $avalue = "UAE";}我想在 site/index.php 中显示 $avalue 变量我在 (site/index.php) 中的代码:<?php echo $avalue; ?>我在这里没有显示任何内容。
3 回答
撒科打诨
TA贡献1934条经验 获得超2个赞
您不能将变量从布局传递到视图。那是因为视图先渲染,布局在视图之后渲染。
如果您有一些财产需要在多个地方访问,则需要以其他方式进行。
1)您可以将它包装在一些自定义组件中,然后通过组件访问它。您可以将设置变量的逻辑放入方法中init()
。然后就可以通过 DI 容器使用组件了。请参阅有关组件的文章。
2)您可以制作一个静态帮助程序类,它将返回正确的值。
3)您可以使用一些事件或回调来设置视图属性中的变量params
。这样它将在$this->params
数组中的每个视图/布局中可用。您可以使用例如控制器或其事件中的beforeAction()
回调。在 beforeAction 回调中,您可以从您可能需要使用的其他地方访问该属性。beforeAction
params
$this->view->params
Yii::$app->view->params
饮歌长啸
TA贡献1951条经验 获得超3个赞
您的变量在 layouts/header.php 中,如果您想在 site/index.php 中访问它,那么您应该将该变量传递给此视图 (site/index.php)
或者另一种选择是使用会话。
- 3 回答
- 0 关注
- 113 浏览
添加回答
举报
0/150
提交
取消