РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
39 of 1392 menu

Директива selected

Директива selected в Blade предназначена для упрощения работы с выпадающими списками. Она принимает условие и, если оно возвращает true, добавляет атрибут selected к элементу option. Это особенно полезно при заполнении форм данными из базы данных или при сохранении состояния выбора после отправки формы.

Синтаксис

<option value="{{ $value }}" @selected($condition)> {{ $label }} </option>

Параметр $condition может быть любым выражением PHP, возвращающим логическое значение. Если условие истинно, атрибут selected будет добавлен к тегу.

Пример ⁅n="sect"⁆

Рассмотрим простой пример с фиксированным списком городов. Выберем город по умолчанию:

<select name="city"> <option value="moscow" @selected($defaultCity === 'moscow')>Москва</option> <option value="spb" @selected($defaultCity === 'spb')>Санкт-Петербург</option> <option value="kazan" @selected($defaultCity === 'kazan')>Казань</option> </select>

Если в контроллере передать переменную $defaultCity со значением 'spb', то будет выбран Санкт-Петербург.

<?php namespace AppHttpControllers; use IlluminateHttpRequest; class CityController extends Controller { public function index() { $defaultCity = 'spb'; return view('city', ['defaultCity' => $defaultCity]); } } ?>

Результат выполнения кода:

<select name="city"> <option value="moscow">Москва</option> <option value="spb" selected>Санкт-Петербург</option> <option value="kazan">Казань</option> </select>

Пример ⁅n="sect"⁆

Используем директиву selected с данными из модели User. Выведем список ролей с выбором текущей роли пользователя:

<select name="role_id"> @foreach ($roles as $role) <option value="{{ $role->id }}" @selected($role->id === $user->role_id)> {{ $role->name }} </option> @endforeach </select>

В контроллере передаём данные пользователя и список доступных ролей:

<?php namespace AppHttpControllers; use AppModelsUser; use AppModelsRole; use IlluminateHttpRequest; class UserController extends Controller { public function edit($id) { $user = User::findOrFail($id); $roles = Role::all(); return view('user.edit', ['user' => $user, 'roles' => $roles]); } } ?>

Результат выполнения кода для пользователя с ролью 2:

<select name="role_id"> <option value="1">Admin</option> <option value="2" selected>Editor</option> <option value="3">User</option> </select>

Пример ⁅n="sect"⁆

Директиву selected можно использовать с более сложными условиями. Например, выберем несколько вариантов из многомерного массива:

<select name="categories[]" multiple> @foreach ($categories as $category) <option value="{{ $category->id }}" @selected(in_array($category->id, $selectedCategories))> {{ $category->name }} </option> @endforeach </select>

В контроллере формируем список выбранных категорий:

<?php namespace AppHttpControllers; use AppModelsCategory; use IlluminateHttpRequest; class ProductController extends Controller { public function filter(Request $request) { $categories = Category::all(); $selectedCategories = $request->input('categories', [1, 3, 5]); return view('products.filter', [ 'categories' => $categories, 'selectedCategories' => $selectedCategories ]); } } ?>

Результат выполнения кода для массива выбранных категорий [1, 3, 5]:

<select name="categories[]" multiple> <option value="1" selected>Electronics</option> <option value="2">Clothing</option> <option value="3" selected>Books</option> <option value="4">Food</option> <option value="5" selected>Toys</option> </select>

Смотрите также

  • директива checked,
    которая аналогично работает с атрибутом checked для чекбоксов и радиокнопок
  • директива disabled,
    которая условно добавляет атрибут disabled к элементам форм
  • директива required,
    которая добавляет атрибут required к полям ввода
  • директива readonly,
    которая условно добавляет атрибут readonly к полям ввода
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить