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

Метод whereIn

Метод whereIn класса Route применяется к определению маршрута для ограничения допустимых значений параметра. Он принимает два параметра: первый - имя параметра в маршруте, второй - массив допустимых значений. Если переданное значение не совпадает ни с одним из элементов массива, маршрут не будет совпадать с запросом.

Синтаксис

<?php Route::get($uri, $action)->whereIn($param, $values); ?>

Первым параметром передаётся имя параметра маршрута, вторым - массив допустимых значений.

Пример

Давайте создадим маршрут для отображения страниц пользователей, который будет принимать только определённые статусы:

<?php use Illuminate\Support\Facades\Route; Route::get('/user/{status}', function ($status) { return "User status: " . $status; })->whereIn('status', ['active', 'inactive', 'pending']); ?>

Теперь маршрут будет совпадать только для значений 'active', 'inactive' или 'pending':

"/user/active" // совпадение "/user/inactive" // совпадение "/user/pending" // совпадение "/user/guest" // не совпадёт

Пример

Давайте отфильтруем маршрут по ID пользователя, разрешив только определённые числовые значения:

<?php use Illuminate\Support\Facades\Route; Route::get('/profile/{id}', function ($id) { return "Profile ID: " . $id; })->whereIn('id', [1, 5, 10, 15]); ?>

Теперь запросы к следующим адресам будут обработаны:

"/profile/1" // совпадёт "/profile/5" // совпадёт "/profile/10" // совпадёт "/profile/15" // совпадёт "/profile/20" // не совпадёт

Пример

Давайте создадим маршрут для управления категориями, который принимает только допустимые значения категорий:

<?php use Illuminate\Support\Facades\Route; Route::get('/category/{slug}', function ($slug) { return "Category: " . $slug; })->whereIn('slug', ['news', 'blog', 'tutorials']); ?>

Примеры запросов:

"/category/news" // совпадёт "/category/blog" // совпадёт "/category/tutorials" // совпадёт "/category/videos" // не совпадёт

Пример

Давайте воспользуемся методом whereIn в группе маршрутов для применения ограничения ко всем маршрутам группы:

<?php use Illuminate\Support\Facades\Route; Route::prefix('admin')->group(function () { Route::get('/user/{role}', function ($role) { return "User role: " . $role; })->whereIn('role', ['admin', 'editor', 'moderator']); Route::get('/post/{type}', function ($type) { return "Post type: " . $type; })->whereIn('type', ['article', 'news', 'review']); }); ?>

Теперь все маршруты в группе используют валидацию параметров через whereIn:

"/admin/user/admin" // совпадёт "/admin/user/guest" // не совпадёт "/admin/post/article" // совпадёт "/admin/post/comment" // не совпадёт

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

  • метод where,
    который ограничивает параметр маршрута регулярным выражением
  • метод whereNumber,
    который ограничивает параметр только числовыми значениями
  • метод whereAlpha,
    который ограничивает параметр только буквенными символами
  • метод whereAlphaNumeric,
    который ограничивает параметр буквенно-цифровыми символами
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить