我正在用 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 關注
- 151 瀏覽
添加回答
舉報
0/150
提交
取消