условие if и else не работает в laravel для массива данных - PullRequest
2 голосов
/ 06 февраля 2020

еще условие, извините, если в корзине нет товаров, которые не печатались, когда корзина пуста

@if($datas)
   @foreach($datas as $data)
   <h5>This is product</h5>
    @endforeach
@else
        <h5>Sorry no items in your cart</h5>    // Not printing when cart is empty  
@endif

Ответы [ 6 ]

2 голосов
/ 06 февраля 2020

Возможно, вы получаете $datas как пустую коллекцию.

Если вы получаете коллекцию в $datas от модели Eloquent, вы можете проверить ее с помощью isNotEmpty как показано ниже

@if($datas->isNotEmpty())
    @foreach($datas as $data)
        <h5>This is product</h5>
    @endforeach
@else
    // $data is empty
@endif

для получения дополнительной информации см. документацию

или вы можете просто проверить это методом empty() (для массивов) как ниже

@if(!empty($datas))
    @foreach($datas as $data)
        <h5>This is product</h5>
    @endforeach
@else
    // $data is empty
@endif
1 голос
/ 06 февраля 2020

проверка массива пустым или нет с функцией empty ()

@if(!empty($datas))
    @foreach($datas as $data)
        <h5>This is product</h5>
    @endforeach
@else
    //do 
@endif
1 голос
/ 06 февраля 2020

если его массив данных, тогда используйте empty ()

@if(!empty($datas))
@else
@endif

или другим способом используйте count ()

@if(count($datas) > 0)
@else
@endif

или если его коллекция , тогда используйте isEmpty ()

@if(!$datas->isEmpty())
@else
@endif
0 голосов
/ 06 февраля 2020

Вы можете использовать laravel forelse l oop - https://laravel.com/docs/6.x/blade#loops

@forelse ($datas as $data)
    <h5>This is product</h5>
@empty
    <h5>Sorry no items in your cart</h5>
@endforelse
0 голосов
/ 06 февраля 2020

Я вижу ответы почти. Но позвольте мне объяснить немного подробнее. Я вижу, что вы проверяете, $datas пусто или нет. Если вы используете вспомогательную функцию dd() для сброса $datas значений, вы увидите, что она всегда возвращает коллекцию из Illuminate\Support\Collection. Таким образом, даже $datas пусто, оно дает пустую коллекцию. Вы можете проверить это сами, как показано ниже в вашем контроллере

if($datas) {
   dd($datas);
}else{
   dd('empty');
}

Это всегда будет показывать пустую коллекцию. Поэтому, используя условие if, вы не можете проверить, что коллекция пуста. Вместо if вы можете проверить коллекцию следующими способами.

  1. collect([])->isEmpty();

    @if ($datas->isEmpty())
    
    @endif
    
  2. collect([])->isNotEmpty();

    @if ($datas->isNotEmpty())
    
    @endif
    
  3. collect([])->first();

    @if ($datas->first())
    
    @endif
    
  4. collect([])->count();

    @if ($datas->count())
    
    @endif
    

Если вы check Laravel Коллекция документации вы можете найти больше.

Сборники полной документации

Доступны указанные выше методы

Редактировать 01 Этот ответ прямо ответит на ваш вопрос. Пожалуйста, отметьте

Красноречивый сбор: подсчет и обнаружение пустых

0 голосов
/ 06 февраля 2020

использовать isset это будет проверка не пустая, а также условие переменной набора

Редактировать Это применимо, только если $ datas является массив

@if(isset($datas))
   @foreach($datas as $data)
   <h5>This is product</h5>
   @endforeach
@else
   <h5>Sorry no items in your cart</h5>    // Not printing when cart is empty  
@endif

ИЛИ

@if(!empty($datas))
   @foreach($datas as $data)
   <h5>This is product</h5>
   @endforeach
@else
   <h5>Sorry no items in your cart</h5>    // Not printing when cart is empty  
@endif
...