Простой foreach в Laravel Blade, включая $loop->first

У меня есть форма, в которой я отображаю четыре ввода текстового поля. Текущий ввод 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'), так как это также изменится в будущем.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо:

['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". Это определенно удобнее и проще, когда вы хотите добавить более одной ситуации таким образом :)

cengsemihsahin 08.01.2023 21:02

Другие вопросы по теме