簡體   English   中英

Laravel 刀片未定義變量錯誤但變量已定義

[英]Laravel Blade Undefined Variable Error But The Variable Is Defined

這是一個非常奇怪的錯誤。 在我的刀片視圖中:

    <?php //dd($site); ?>
    @if($site==='site1')

在第二行@if($site==='site1')我得到一個Undefined variable: site錯誤。 但是,如果我取消注釋轉儲並死掉,我會設置$site變量。 它實際上在下一行,它告訴我它在刀片中沒有設置$site變量。 我的if語句語法錯誤嗎?

它看起來對我來說是正確的,文檔給出了:

@if (count($records) === 1)
    I have one record!
@elseif (count($records) > 1)
    I have multiple records!
@else
    I don't have any records!
@endif

@if和第一個括號(之間添加一個空格沒有區別。

我嘗試清除視圖緩存,但這也沒有什么區別。 其他所有更改都會被注冊,例如,如果我刪除變量名前面的$ ,我會得到一個未定義的常量錯誤。 我在本地開發。

我完全不知所措,因為即使變量在刀片深處是三個級別,我也正確地通過了它,並且我用轉儲和死亡確認了它。 有條件的只是不會拿起它。

我將它傳遞到這樣的視圖中:

 @component('pages.common.component.mycomponent',['site'=>$site])  
 @endcomponent

再上一層是這樣的:

 @component('pages.common.parent.mycomponent',['site'=>'site1'])  
 @endcomponent

任何想法我都會非常感激!

編輯:

dd()調用輸出:

“站點 1”

作為一個字符串。

答案稍后在第二級(我有錯誤的組件的父級)有兩個聲明到第三個組件,其中一個沒有傳遞$site變量。 當然,因為我在第三個組件中使用了內聯dd()調試方法,所以起初它沒有意義,因為它到達了第一個聲明而不是第二個聲明。

幫助我的是在整個視圖上調用 render 方法並將其作為字符串輸出,所以我可以在第一個聲明中看到它,但在第二個聲明中沒有。

所以在 controller 中,而不是:

return view('pages.routes.parent', $params);

我做了:

dd(view('pages.routes.parent', $params)->render()); 將整個視圖作為一個字符串 output 來跟蹤我丟失數據的位置。 檢查storage編譯的視圖並沒有幫助,因為它們是每個組件或視圖特有的部分。

請注意,要使其正常工作,我必須將@if條件句包裝在另一個@if條件句中,檢查$site變量是否為isset()

希望這可以在將來對其他人有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM