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