#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