如何从外部视图在Laravel Blade @foreach循环中获取变量

时间:2019-04-03 11:59:06

标签: php laravel foreach laravel-blade

我有blade个循环的@foreach视图。在此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: userforeach循环从视图的其他部分看不到变量。

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)

5 个答案:

答案 0 :(得分:1)

根据您的情况,请在返回

上使用此代码
return View::make('messenger.index')

->with(compact('threads'))

->with(compact('user'));

您可以根据需要多次使用 。这将有望解决您的问题。

答案 1 :(得分:0)

您需要检查变量是否具有值,如果laravel无法获得$user->getAvatar()的值,则肯定会返回错误 因此,只需尝试关注

@isset($user->getAvatar())

@endisset

答案 2 :(得分:0)

尝试一下:

@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

答案 3 :(得分:0)

尝试在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

希望对您有帮助!

答案 4 :(得分:0)

为什么不使用<img src="{{ auth()->user()->getAvatar() }}"> 辅助函数

FILES="files.txt"

for f in $FILES
do
  echo "Processing $f file..."
  # take action on each file. $f store current file name
  cat $f
done

这样,您无需将其通过控制器。