为了账号安全,请及时绑定邮箱和手机立即绑定

Php Yii2 如何访问布局中声明的变量到站点?

Php Yii2 如何访问布局中声明的变量到站点?

PHP
阿晨1998 2022-12-11 09:56:35
我正在用 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 回调中,您可以从您可能需要使用的其他地方访问该属性。beforeActionparams$this->view->paramsYii::$app->view->params


查看完整回答
反对 回复 2022-12-11
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

您的变量在 layouts/header.php 中,如果您想在 site/index.php 中访问它,那么您应该将该变量传递给此视图 (site/index.php)

或者另一种选择是使用会话。


查看完整回答
反对 回复 2022-12-11
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

您需要将此代码添加到您的案例陈述中,并且默认

$this->render('index.php',array('avalue'=>$avalue));


查看完整回答
反对 回复 2022-12-11
  • 3 回答
  • 0 关注
  • 113 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信