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

我正在用 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; ?>


我在这里没有显示任何内容。


阿晨1998
浏览 114回答 3
3回答

撒科打诨

您不能将变量从布局传递到视图。那是因为视图先渲染,布局在视图之后渲染。如果您有一些财产需要在多个地方访问,则需要以其他方式进行。1)您可以将它包装在一些自定义组件中,然后通过组件访问它。您可以将设置变量的逻辑放入方法中init()。然后就可以通过 DI 容器使用组件了。请参阅有关组件的文章。2)您可以制作一个静态帮助程序类,它将返回正确的值。3)您可以使用一些事件或回调来设置视图属性中的变量params。这样它将在$this->params数组中的每个视图/布局中可用。您可以使用例如控制器或其事件中的beforeAction()回调。在 beforeAction 回调中,您可以从您可能需要使用的其他地方访问该属性。beforeActionparams$this->view->paramsYii::$app->view->params

饮歌长啸

您的变量在 layouts/header.php 中,如果您想在 site/index.php 中访问它,那么您应该将该变量传递给此视图 (site/index.php)或者另一种选择是使用会话。

汪汪一只猫

您需要将此代码添加到您的案例陈述中,并且默认$this->render('index.php',array('avalue'=>$avalue));
打开App,查看更多内容
随时随地看视频慕课网APP