[英]Laravel 6 null coalescing operator gives Undefined variable: user when calling a method on it?
我正試圖讓這個工作。
<option value="{{$role->id}}" {{ (collect(old('userrole') ?? $user->roles()->pluck('id')->implode(", ") ?? '')->contains($role->id)) ? 'selected':'' }}>{{$role->name}}</option>
由於某種原因,它不起作用。 它返回錯誤:未定義的變量:用戶。
有什么幫助嗎?
空合並運算符??
將檢查最終結果是否為 null - 它不會考慮任何可能未聲明以獲得該結果的變量。
因此,您可以使用三元運算符來查看是否為該表達式設置了$roles
值。
{{ (collect(
old('userrole')
?? (isset($user)
? $user->roles()->pluck('id')->implode(", ")
: ''
)
)->contains($role->id))
? 'selected'
: '' }}
old()
助手還接受第二個參數,如果該值不存在,則作為“默認”,您可以使用它。 並且由於您正在尋找單個值,因此可以使用刀片@if
塊替換對selected
output 的三元運算符的使用。
<option value="{{$role->id}}"
@if (collect(old('userrole', (isset($user) ? $user->roles()->pluck('id')->implode(", ") : ''))->contains($role->id)))
selected
@endif
>{{$role->name}}</option>
您還可以通過在 object 本身上使用contains()
來減少代碼中的混亂(無需 pluck pluck()
id`)。
<option value="{{ $role->id }}"
@if (collect(old('userrole', (isset($user) ? $user->roles())->contains($role->id)))
selected
@endif
>{{ $role->name }}</option>
當值未定義時,刀片合並運算符只能在渲染刀片文件時捕獲錯誤。 “崩潰”來自於在未定義的變量上調用關系->roles()
。 基本上,它在到達合並操作員可以保存它的地步之前就崩潰了。 當您嘗試在刀片模板中提取這樣的關系時,您需要確保首先定義變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.