如果变量在laravel中为false,如何隐藏块?
我有一个将变量输出到视图的方法。在视图中,我检查变量是否为true,然后显示所需的块,如果为false,则不显示该块。但出于某种原因,这对我不起作用如果变量在laravel中为false,如何隐藏块?,laravel,Laravel,我有一个将变量输出到视图的方法。在视图中,我检查变量是否为true,然后显示所需的块,如果为false,则不显示该块。但出于某种原因,这对我不起作用 @if($mainAlbum) <div class="card"> <a href="{{route('allAlbums', ['id' => $user->id])}}"><h1 class="mt-2 mb-2" style="font-size: 0.9rem; margin-l
@if($mainAlbum)
<div class="card">
<a href="{{route('allAlbums', ['id' => $user->id])}}"><h1 class="mt-2 mb-2" style="font-size: 0.9rem; margin-left: 5px; color: black;">Плейлисты<img src="{{asset('img/right.png')}}" width="11"> </h1></a>
@foreach($mainAlbum as $album)
<a href="{{route('album', ['id' => $user->id, 'album' => $album->id])}}"><img src="{{$album->cover}}" class="img-fluid"></a>
@endforeach
</div>
@endif
在模板中的@if()
之前,添加{{{dd($mainlumb)}}
如果希望块不显示,请检查返回值是否为falsy(即null
、false
或0
),并且不是像字符串那样的真实值(即“
”、“false”
、“null”
)或对象
或数组
如果您希望它显示,那么请确保它是真实值。问题是
get()
总是返回一个集合,不管里面是否有相册,因此@If($mainlumb)
总是真实的
我要做的是:
在控制器中:
public function index($id) {
// switch 'find' with 'findOrFail' this way it will throw a 404 if no user is found
$user = User::findOrFail($id);
$posts = $user->profile()->orderBy('created_at', 'desc')->paginate(2);
// use 'first' instead of 'get', so it will return a model or null instead of a collection
$mainVideo = $user->profileVideo()->orderBy('created_at', 'desc')->first();
$mainAlbum = $user->profileAlbums()->orderBy('created_at', 'desc')->first();
return view('profile.profile', compact('user', 'posts', 'mainVideo', 'mainAlbum'));
}
find()
,而是使用findOrFail()
,因此如果找不到用户,页面将抛出404错误limit(1)
您可以使用first()
而不是get()
,first()
将返回模型或null,get()
将始终返回集合,无论它是否包含模型@if($mainAlbum)
<div class="card">
<a href="{{ route('allAlbums', ['id' => $user->id]) }}">
<h1 class="mt-2 mb-2" style="font-size: 0.9rem; margin-left: 5px; color: black;">
Плейлисты <img src="{{ asset('img/right.png') }}" width="11">
</h1>
</a>
<a href="{{ route('album', ['id' => $user->id, 'album' => $mainAlbum->id]) }}">
<img src="{{ $mainAlbum->cover }}" class="img-fluid">
</a>
</div>
@endif
@if($main相册)
@恩迪夫
@foreach
,因为您的变量现在将保存模型而不是集合@if
检查现在起作用,因为$main album
将包含模型或空值你说的是哪个变量?您正在将其中4个传递给视图。此外,您提供的代码不会检查变量是否为真。mainVideo和mainAlbum存在问题
@if($mainAlbum)
<div class="card">
<a href="{{ route('allAlbums', ['id' => $user->id]) }}">
<h1 class="mt-2 mb-2" style="font-size: 0.9rem; margin-left: 5px; color: black;">
Плейлисты <img src="{{ asset('img/right.png') }}" width="11">
</h1>
</a>
<a href="{{ route('album', ['id' => $user->id, 'album' => $mainAlbum->id]) }}">
<img src="{{ $mainAlbum->cover }}" class="img-fluid">
</a>
</div>
@endif