Laravel Blade 简单的 foreach 包括 $loop->first

Har*_*ist 0 php foreach loops laravel

我有一个表单,其中显示四个文本字段输入。当前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
Run Code Online (Sandbox Code Playgroud)

这些都是隐藏的菜单选项卡,只有第一个选项卡应显示为活动状态,因此:

@if($loop->first) active @endif
Run Code Online (Sandbox Code Playgroud)

然而问题是,当当前语言环境是 时ca,语言环境也$loop->first()将是ca。并且这个不能是活动的,因为它永远不会显示在右侧。

我正在尝试找到一个简单的解决方案,而无需太多的if else事情。此外,数组['ca','en','es','nl']将针对来自 的某些数据进行更改config,因此稍后会有更多语言环境,并且ca并不总是第一个。所以我无法进行检查,@if(app()->getLocale() == 'ca')因为这种情况将来也会改变。

小智 5

代替:

['ca','en','es','nl']
Run Code Online (Sandbox Code Playgroud)

和:

array_diff(['ca','en','es','nl'], [app()->getLocale()])
Run Code Online (Sandbox Code Playgroud)

并删除这个:

@if(app()->getLocale() == $lang) @continue @endif
Run Code Online (Sandbox Code Playgroud)

这将从数组中删除代表当前语言的项目。