Laravel in_arrary отображение тегов

#laravel

#laravel

Вопрос:

Я, вероятно, слишком много думаю об этом… Я начал изучать Laravel на днях. Я следил за простым видео проекта типа «Блог» на YouTube.

Я немного отклонился от некоторых аспектов видео. Здесь я создал «Теги» для сообщений в блоге. Изображение здесь

Что я пытаюсь сделать, так это сделать так, чтобы при использовании тега «Важно!» он отображался с загрузочным «значок-предупреждение», тогда как остальные теги будут использовать класс «значок-основной»

Вот что я придумал до сих пор:

Теги:

 @foreach ($post->tags as $tag)
    @if (in_array('Important!', $post->tags))
        <span class="badge badge-pill badge-warning">{{ $tag }}</span>
    @else
        <span class="badge badge-pill badge-primary">{{ $tag }}</span>
    @endif
@endforeach
 

Как вы можете видеть на скриншоте, здесь отображаются все теги для этого сообщения с классом warning . Что имеет смысл, потому что это то, что я говорю ему делать! У меня просто пустой момент, ха-ха.

Комментарии:

1. if(in_array('Important!', $post->tags)) проверяет, есть ли тег «Важно!», связанный с сообщением, а не если сам тег «Важен!».

Ответ №1:

Проблема в том, что вы проверяете исходный массив, если важный!тег существует. Поскольку он существует, он каждый раз оценивается как true, таким образом, у каждого тега есть badge-warning класс.
Вы должны проверять только текущий итерированный тег. Я изменил ваш код, чтобы отразить это изменение
, попробуйте:

   @foreach ($post->tags as $tag)
     @if ('Important!'== $tag))
            <span class="badge badge-pill badge-warning">{{ $tag }}</span>
      @else
            <span class="badge badge-pill badge-primary">{{ $tag }}</span>
      @endif
  @endforeach
 

Комментарии:

1. Спасибо за ваш ответ! Этот вариант действительно работает и очень близок к тому, что я пробовал ранее! Я отметил вышеуказанный вариант как правильный ответ, но это тоже здорово. Спасибо.

2. Я объяснил вам проблему, а не рефакторил ваш код, чтобы сфокусировать ответ на проблеме

Ответ №2:

 @foreach ($post->tags as $tag)
    <span class="badge badge-pill badge-{{$tag == 'Important!' ? 'warning' : 'primary'}}">
        {{ $tag }}
    </span>       
@endforeach