[英]How to get variable in Laravel blade @foreach loop from outer view
我有帶有@foreach
循環的blade
視圖。 在這個blade
視圖中,我還在 UserController 中傳遞了$user
變量。 在@foreach
我有代碼{{ $user->getAvatar() }}
。
@extends('layouts.app')
@section('content')
@foreach($threads as $thread)
<div class="media alert {{ $class }}">
<img src="{{ $user->getAvatar() }}">
<div class="media-body">
<p>
{{ $thread->latestMessage->body }}
</p>
</div>
</div>
@endforeach
@endsection
這是我的控制器中的 index() 函數
public function index()
{
$user = Auth::user();
$threads = Thread::getAllLatest()->get();
return view('messenger.index', compact('threads', 'user'));
}
我有錯誤Undefined variable: user
。 foreach
循環從視圖的其他部分看不到變量。
ErrorException (E_ERROR)
Undefined variable: user (View:messenger\partials\thread.blade.php) (View: messenger\partials\thread.blade.php)
Previous exceptions
Undefined variable: user (View: messenger\partials\thread.blade.php) (0)
Undefined variable: user (0)
在您的情況下,請在返回時使用此代碼
return View::make('messenger.index')
->with(compact('threads'))
->with(compact('user'));
您可以隨心所欲地使用。 這將有望解決您的問題。
您需要檢查變量是否有值,如果 Laravel 無法獲取$user->getAvatar()
值,它肯定會返回錯誤,因此請嘗試以下操作
@isset($user->getAvatar())
@endisset
試試這個:
@foreach($threads as $thread)
<div class="media alert {{ $class }}">
<img src="{{ isset($user) ? $user->getAvatar : '' }}">
<div class="media-body">
<p>
{{ $thread->latestMessage->body }}
</p>
</div>
</div>
@endforeach
嘗試在 foreach 循環上面定義它
@extends('layouts.app')
@section('content')
<?php
$user_avatar = $user->getAvatar();
?>
@foreach($threads as $thread)
<div class="media alert {{ $class }}">
<img src="{{ $user_avatar }}">
<div class="media-body">
<p>
{{ $thread->latestMessage->body }}
</p>
</div>
</div>
@endforeach
@endsection
希望能幫助到你 !
為什么不使用auth()
輔助函數
<img src="{{ auth()->user()->getAvatar() }}">
這樣你就不需要通過控制器傳遞它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.