У меня есть форма, в которой я отображаю четыре ввода текстового поля. Текущий ввод app()->getLocale() отображается слева, а приведенный ниже код предназначен для оставшихся 3 локалей, которые отображаются справа:
@foreach(['ca','en','es','nl'] as $lang)
@if (app()->getLocale() == $lang) @continue @endif
<li>
<a href = "#{{ $lang }}" class = "@if ($loop->first) active @endif"
</li>
@endforeach
Это все вкладки меню, которые скрыты, только первая должна отображаться как активная, поэтому:
@if ($loop->first) active @endif
Проблема, однако, в том, что если текущая локаль ca, $loop->first() также будет ca. И этот не может быть активным, так как он никогда не будет отображаться с правой стороны.
Я пытаюсь найти простое решение без лишних if else вещей. Кроме того, массив ['ca','en','es','nl'] будет изменен для некоторых данных, поступающих из config, поэтому позже будет больше локалей, а ca не всегда будет первым. Поэтому я не могу делать проверки с помощью @if (app()->getLocale() == 'ca'), так как это также изменится в будущем.






Вместо:
['ca','en','es','nl']
с:
array_diff(['ca','en','es','nl'], [app()->getLocale()])
и удалите это:
@if (app()->getLocale() == $lang) @continue @endif
Это удалит элемент, представляющий текущий язык, из вашего массива.
@Hardist Итак, вы хотите узнать что-то новое? Вы можете использовать
@class(['active' => $loop->first])вместоclass = "@if ($loop->first) active @endif". Это определенно удобнее и проще, когда вы хотите добавить более одной ситуации таким образом :)