Метод where
Метод where применяется к объекту маршрута и позволяет задать
регулярное выражение для проверки значений параметров URL.
Первым параметром передаётся имя параметра, вторым - шаблон
регулярного выражения. Если параметр не соответствует шаблону,
маршрут не будет совпадать.
Синтаксис
<?php
use Illuminate\Support\Facades\Route;
Route::get($uri, $callback)->where($param, $pattern);
?>
Пример
Давайте ограничим параметр 'id' только числовыми значениями:
<?php
use Illuminate\Support\Facades\Route;
Route::get('/user/{id}', function ($id) {
return "User ID: " . $id;
})->where('id', '[0-9]+');
?>
При переходе по адресу /user/123 будет выведено:
"User ID: 123"
А при переходе по адресу /user/abc будет ошибка 404,
так как параметр не соответствует шаблону.
Пример
Давайте ограничим параметр 'name' только буквенными символами:
<?php
use Illuminate\Support\Facades\Route;
Route::get('/profile/{name}', function ($name) {
return "Profile: " . $name;
})->where('name', '[A-Za-z]+');
?>
При переходе по адресу /profile/john будет выведено:
"Profile: john"
При переходе по адресу /profile/john123 будет ошибка 404.
Пример
Давайте ограничим несколько параметров одновременно, передав массив правил:
<?php
use Illuminate\Support\Facades\Route;
Route::get('/post/{id}/{slug}', function ($id, $slug) {
return "Post ID: " . $id . ", Slug: " . $slug;
})->where([
'id' => '[0-9]+',
'slug' => '[a-z0-9\-]+'
]);
?>
При переходе по адресу /post/5/hello-world будет выведено:
"Post ID: 5, Slug: hello-world"
При переходе по адресу /post/abc/hello-world будет ошибка 404,
так как параметр id не соответствует шаблону.
Смотрите также
-
метод
whereNumber,
который ограничивает параметр целым числом -
метод
whereAlpha,
который ограничивает параметр буквенными символами -
метод
whereAlphaNumeric,
который ограничивает параметр буквенно-цифровыми символами -
метод
whereIn,
который ограничивает параметр списком допустимых значений