IT

라라벨 블레이드 점검 비어 있는 포어치

itgroup 2022. 11. 27. 11:25
반응형

라라벨 블레이드 점검 비어 있는 포어치

기본 html 마크업이 표시되지 않도록 foreach가 비어 있는지 확인하고 싶습니다.if 스테이트먼트로 랩을 하려고 합니다만, 비어 있는 경우는, 포어치를 루프 하지 말아 주세요.

@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

언급 is Empty()

empty()를 사용해야 합니다.

@if (!empty($status->replies)) 

<div class="media-body reply-body">
    @foreach ($status->replies as $reply)
        <p>{{ $reply->body }}</p>
    @endforeach
</div>

@endif

카운트를 사용할 수 있지만 어레이가 클수록 시간이 더 오래 걸립니다. 빈 어레이를 사용하는 것이 더 나은지 여부만 알면 됩니다.

배열이니까==== ''작동하지 않습니다(===는 빈 문자열이어야 함을 의미합니다).

count()사용하여 어레이에 요소가 있는지 확인합니다(count는 숫자를 반환하고 1 이상은 true로 평가하며 0 = false).

@if (count($status->replies) > 0)
 // your HTML + foreach loop
@endif

데이터(존재하는 경우)의 에코

경우에 따라서는 변수를 에코하고 싶지만 변수가 설정되었는지 확실하지 않을 수 있습니다.다음과 같이 상세 PHP 코드로 표현할 수 있습니다.

{{ isset($name) ? $name : 'Default' }}

단, Blade는 3원짜리 문장을 작성하는 대신 다음과 같은 편리한 단축키를 제공합니다.

{{ $name or 'Default' }}

이 예에서는 $name 변수가 존재하는 경우 해당 값이 표시됩니다.단, 존재하지 않는 경우 Default라는 단어가 표시됩니다.

https://laravel.com/docs/5.4/blade#displaying-data 에서

다음 코드를 사용하여 먼저 laravel 디렉티브의 @isset을 사용하여 변수가 설정되었는지 여부를 확인한 후 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

질문을 잘 이해했다면 이것이 가장 좋은 해결책입니다.

사용방법$object->first()내부에서 코드를 실행하는 방법if스테이트먼트 원스, 즉 첫 번째 루프에 있는 경우.같은 개념으로,$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

언급URL : https://stackoverflow.com/questions/32652818/laravel-blade-check-empty-foreach

반응형