[英]Laravel blade check empty foreach
我想检查我的foreach是否为空,以便基本的html标记不显示且内部没有结果。 我正在尝试将其包装在if语句中,然后如果它为空,则不要循环其他foreach。
@if ($status->replies === '')
@elseif
<div class="media-body reply-body">
@foreach ($status->replies as $reply)
<p>{{ $reply->body }}</p>
@endforeach
</div>
@endif
@if (!(empty($status->replies))
<div class="media-body reply-body">
@foreach ($status->replies as $reply)
<div class="media">
<a class="pull-left" href="{{ route('profile.index', ['username' => $reply->user->username]) }}">
<img class="media-object" alt="{{ $reply->user->getNameOrUsername() }}" src="{{ $reply->user->getAvatarUrl() }}">
</a>
<div class="media-body">
<h5 class="media-heading"><a href="{{ route('profile.index', ['username' => $reply->user->username]) }}">{{ $reply->user->getNameOrUsername() }}</a></h5>
<p>{{ $reply->body }}</p>
<ul class="list-inline list-replies">
<li>
<a href="{{ route('status.like', ['statusId' => $reply->id]) }}"><i class="fa fa-thumbs-up"></i></a>
{{ $reply->likes->count() }} {{ str_plural('like', $reply->likes->count()) }}</li>
<li>{{ $reply->created_at->diffForHumans() }}</li>
</ul>
</div>
<hr>
</div>
@endforeach
</div>
@endif
检查文档以获得最佳结果:
@forelse($status->replies as $reply)
<p>{{ $reply->body }}</p>
@empty
<p>No replies</p>
@endforelse
我认为您正在尝试检查数组是否为空。您可以这样做:
@if(!$result->isEmpty())
// $result is not empty
@else
// $result is empty
@endif
引用 isEmpty()
它是一个数组,所以==== ''
不起作用(===表示它必须为空字符串。)
使用count()标识数组中是否包含任何元素(count返回一个数字,如果大于等于1,则结果为true,0 = false。)
@if (count($status->replies) > 0)
// your HTML + foreach loop
@endif
如果存在则回显数据
有时您可能希望回显一个变量,但是不确定是否已设置该变量。 我们可以这样用冗长的PHP代码来表示:
{{ isset($name) ? $name : 'Default' }}
但是,刀片式服务器提供了以下便捷的捷径,而不是编写三元语句:
{{ $name or 'Default' }}
在此示例中,如果$ name变量存在,将显示其值。 但是,如果不存在,则会显示默认值。
您应该使用empty()
@if (!empty($status->replies))
<div class="media-body reply-body">
@foreach ($status->replies as $reply)
<p>{{ $reply->body }}</p>
@endforeach
</div>
@endif
您可以使用count,但是如果数组较大,则需要更长的时间,如果您只需要知道它是否为空,则使用空是更好的选择。
如果我很了解这个问题,这是我最好的解决方案:
使用$object->first()
方法在if
语句内(即在第一个循环上$object->first()
运行一次代码。 $object->last()
也适用相同的概念。
@if($object->first())
<div class="panel user-list">
<table id="myCustomTable" class="table table-hover">
<thead>
<tr>
<th class="col-email">Email</th>
</tr>
</thead>
<tbody>
@endif
@foreach ($object as $data)
<tr class="gradeX">
<td class="col-name"><strong>{{ $data->email }}</strong></td>
</tr>
@endforeach
@if($object->last())
</tbody>
</table>
</div>
@endif
使用以下代码,可以首先使用laravel指令的@isset检查变量是否已设置,然后使用@unless的laravel指令检查数组是否为空或不
@if(@isset($names))
@unless($names)
Array has no value
@else
Array has value
@foreach($names as $name)
{{$name}}
@endforeach
@endunless
@else
Not defined
@endif
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.