Я, наверное, слишком много думаю об этом... На днях я начал изучать Laravel. Я следил за простым видео проекта типа «Блог» на YouTube.
Я немного отвлекся от некоторых аспектов видео. Здесь я создал «теги» для сообщений в блоге. Изображение здесь
Что я пытаюсь сделать, так это сделать так, чтобы "Важно!" используется тег, который отображается с помощью Bootstrap «значок-предупреждение», тогда как остальные теги будут использовать класс «значок-основной».
Вот что я пока накрутил:
Теги:
@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
Как вы можете видеть на снимке экрана, отображаются все теги для этого сообщения с классом предупреждения. Что имеет смысл, потому что это то, что я говорю ему делать! У меня просто пустой момент, ха-ха.
Проблема в том, что вы проверяете исходный массив, если это важно! тег существует. Поскольку он существует, он каждый раз оценивается как истина, поэтому каждый тег имеет класс 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
Спасибо за Ваш ответ! Этот вариант действительно работает и очень близок к тому, что я пробовал раньше! Я отметил вариант выше как правильный ответ, но это тоже здорово. Спасибо.
Я объяснил вам проблему и не рефакторил ваш код, чтобы ответ был сосредоточен на проблеме.
@foreach ($post->tags as $tag)
<span class = "badge badge-pill badge-{{$tag == 'Important!' ? 'warning' : 'primary'}}">
{{ $tag }}
</span>
@endforeach
if (in_array('Important!', $post->tags))
проверяет, есть ли «Важно!» тег, связанный с публикацией, если сам тег не имеет значения «Важно!».