[英]Laravel blade global variable
我在laravel中的全局變量有問題。 我了解View Composer,但我的問題與該主題無關。 如何在laravel視圖(* .blade.php | .php)模板引擎中做這種簡單的事情? 例如,這是我的一種視圖( .blade.php | * .php)中的示例代碼 :
<?php
function myFunc() {
global $myvar;
if ( ! $myvar ) {
$myvar = 'my var is empty';
}
dd( $myvar );
}
$myvar = 'my var value';
myFunc();
執行結束時,它顯示“我的變量為空”而不是“我的變量值”。 有人知道為什么會這樣嗎?
最好的解決方案是使用Config
門面。 您可以創建一個新的配置文件,並根據需要靜態設置全局變量。 但是,此外觀的最佳功能是get()
和set()
方法,它們使您可以動態定義這些變量。 請參閱: 在Laravel 5中設置全局變量
在您的情況下:
<?php
function myFunc() {
$myvar = Config::get('vars.myvar');
if ( ! $myvar ) {
$myvar = 'my var is empty';
}
dd( $myvar );
}
Config::set('vars.myvar');
myFunc();
確保導入的Config
使用外牆use
你的文件的頂部。
最后我找到了答案,它有范圍問題。 因為laravel使用類和方法來檢索視圖,所以基於此頁面信息: http : //php.net/manual/zh/language.variables.scope.php#98811
所以我們可以這樣編寫代碼:
<?php
function myFunc() {
global $myvar;
if ( ! $myvar ) {
$myvar = 'my var is empty';
}
dd( $myvar );
}
global $myvar; // This line is the key
$myvar = 'my var value';
myFunc();
在Laravel中,您可以通過在主視圖和子視圖中將希望傳遞值的變量聲明為全局變量,從而將值從包含的子葉片傳遞到主葉片。 關鍵是在兩端(即在主刀片和附帶刀片中)將傳遞變量聲明為全局變量。
例如:
包含子刀片
<? global $monetary_total; ?> <!-- somewhere up top of your sub-blade declare your variable as global scope -->
@foreach ($monetary_assets_joint as $monetary_asset)
.... your code that cycles through rows and pulls a value...
<td>{{$monetary_asset->monetary_asset_value}} </td> <!-- somewhere you'll display the pulled values -->
... rest of your view code and markup ....
<?php $monetary_total += $monetary_asset->monetary_asset_value; //summing up pulled row value into passing variable ?>
@endforeach
主要刀片:
<? global $monetary_total; ?> <!-- somewhere up top of your blade declare your variable as global scope -->
...
@include('partials.sub_blade') <!-- somewhere you include your sub-blade -->
...
{{$monetary_total}} <!-- display summed total from included sub-bade's rows -->
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.