Laravel Blade — это мощный механизм создания шаблонов, который упрощает процесс создания пользовательских интерфейсов в приложениях Laravel. Одним из распространенных требований является заполнение поля выбора опциями на основе поиска по массиву. В этой статье мы рассмотрим различные методы достижения этой цели в Laravel Blade, а также приведем примеры кода.
Методы поиска по массиву в Laravel Blade:
-
Использование директивы
@foreach:<select> @foreach($array as $key => $value) <option value="{{ $key }}" {{ $key == $selectedKey ? 'selected' : '' }}> {{ $value }} </option> @endforeach </select>Объяснение: выполните итерацию по массиву с помощью директивы
@foreachи создайте элемент<option>для каждого элемента массива. Используйте переменную$selectedKeyдля сравнения с каждым ключом массива и соответствующим образом установите атрибутselected. -
Использование директивы
@forelse:<select> @forelse($array as $key => $value) <option value="{{ $key }}" {{ $key == $selectedKey ? 'selected' : '' }}> {{ $value }} </option> @empty <option value="">No options available</option> @endforelse </select>Объяснение: аналогично предыдущему методу, но включает запасной вариант, если массив пуст.
-
Использование функции
collect():<select> @foreach(collect($array)->sortBy('value') as $item) <option value="{{ $item['key'] }}" {{ $item['key'] == $selectedKey ? 'selected' : '' }}> {{ $item['value'] }} </option> @endforeach </select>Объяснение: Преобразуйте массив в коллекцию с помощью функции
collect()и отсортируйте ее по ключу «значение». Затем пройдитесь по коллекции и создайте элементы<option>. -
Использование директивы
@php:@php $selectedOption = collect($array)->where('key', $selectedKey)->first(); @endphp <select> @foreach($array as $item) <option value="{{ $item['key'] }}" {{ $item['key'] == $selectedKey ? 'selected' : '' }}> {{ $item['value'] }} </option> @endforeach </select>Объяснение: используйте директиву
@phpдля выполнения поиска по массиву с использованием методаwhere()коллекции. Сохраните выбранный параметр в переменной и используйте его в элементах<option>.