Метод whereUlid
Метод whereUlid применяется к экземпляру маршрута для добавления ограничения на параметр,
указанный в URI. Он гарантирует, что значение параметра соответствует формату ULID -
26-значному строковому идентификатору, состоящему из букв латинского алфавита и цифр
(без учёта регистра). Первым параметром передаётся имя параметра маршрута.
Синтаксис
<?php
use Illuminate\Support\Facades\Route;
Route::get($uri, $callback)->whereUlid($parameter);
?>
Пример
Давайте создадим маршрут, который принимает ULID-идентификатор пользователя в качестве параметра:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserController;
Route::get('/users/{id}', [UserController::class, 'show'])
->whereUlid('id');
?>
Теперь маршрут /users/01H0X3Y5Z6A7B8C9D0E1F2G3H4 будет обработан,
а запрос на /users/invalid-id вернёт ошибку 404.
Пример
Метод whereUlid можно использовать в группе маршрутов для применения ко всем вложенным путям:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PostController;
use App\Http\Controllers\CommentController;
Route::prefix('/posts')->group(function () {
Route::get('/{post}', [PostController::class, 'show'])
->whereUlid('post');
Route::get('/{post}/comments/{comment}', [CommentController::class, 'show'])
->whereUlid('post')
->whereUlid('comment');
});
?>
В этом примере оба параметра 'post' и 'comment' будут проверены на соответствие формату ULID.
Пример с контроллером
Рассмотрим полный пример использования метода whereUlid в контроллере:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ProductController;
Route::get('/products/{product}', [ProductController::class, 'show'])
->whereUlid('product');
?>
<?php
namespace App\Http\Controllers;
use App\Models\Product;
use Illuminate\Http\Request;
class ProductController extends Controller
{
public function show(Request $request, string $product)
{
$res = Product::where('ulid', $product)->firstOrFail();
return response()->json($res);
}
}
?>
Результат выполнения для корректного ULID-идентификатора:
{"id":1,"name":"Product 1","ulid":"01H0X3Y5Z6A7B8C9D0E1F2G3H4","price":99.99}
Смотрите также
-
метод
where,
который позволяет задать произвольное регулярное выражение для параметра -
метод
whereUuid,
который проверяет параметр на соответствие формату UUID -
метод
whereNumber,
который ограничивает параметр только числовыми значениями -
метод
whereAlpha,
который разрешает только буквенные символы в параметре