簡體   English   中英

如何從外部視圖獲取 Laravel Blade @foreach 循環中的變量

[英]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.

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