我有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: 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)
答案 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
这样,您无需将其通过控制器。