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

Правило ulid

Правило ulid используется для проверки, что значение поля представляет собой корректный ULID-идентификатор. ULID - это 26-символьный строковый идентификатор, состоящий из буквенно-цифровых символов (A-Z, a-z, 0-9), который является лексикографически сортируемым и содержит метку времени. Это правило доступно в Laravel начиная с версии 8.x и активно используется для валидации идентификаторов в API и базах данных.

Правило не принимает дополнительных параметров и просто проверяет, что переданное значение соответствует формату ULID: 26 символов из набора [0-9A-Za-z], где первые 10 символов представляют собой метку времени в миллисекундах с эпохи Unix, а оставшиеся 16 символов - криптографически безопасная случайная часть.

Синтаксис

<?php use IlluminateValidationRule; $rules = [ 'field' => 'ulid', ]; ?>

Альтернативный синтаксис с использованием класса Rule:

<?php use IlluminateValidationRule; $rules = [ 'field' => Rule::ulid(), ]; ?>

Пример с валидацией в контроллере

Давайте провалидируем входящий запрос с полем 'id', которое должно содержать корректный ULID:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; use IlluminateSupportFacadesValidator; class UserController extends Controller { public function store(Request $request) { $validator = Validator::make($request->all(), [ 'id' => 'required|ulid', 'name' => 'required|string|max:255', 'email' => 'required|email', ]); if ($validator->fails()) { return response()->json($validator->errors(), 422); } return response()->json(['message' => 'User created successfully'], 201); } } ?>

Пример использования в FormRequest

Вот как можно использовать правило ulid в классе FormRequest для валидации идентификатора модели:

<?php namespace AppHttpRequests; use IlluminateFoundationHttpFormRequest; use IlluminateValidationRule; class UpdatePostRequest extends FormRequest { public function authorize() { return true; } public function rules() { return [ 'id' => ['required', 'ulid'], 'title' => ['required', 'string', 'max:255'], 'content' => ['required', 'string'], ]; } } ?>

Пример с выводом ошибок валидации

Рассмотрим пример, где поле 'id' не соответствует формату ULID:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; use IlluminateSupportFacadesValidator; class ProductController extends Controller { public function show(Request $request) { $data = [ 'id' => 'invalid-ulid-12345', ]; $validator = Validator::make($data, [ 'id' => 'required|ulid', ]); if ($validator->fails()) { $errors = $validator->errors()->all(); foreach ($errors as $error) { echo $error; } } else { echo 'ULID is valid'; } } } ?>

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

"The id field must be a valid ULID."

Пример с корректным ULID

Теперь передадим правильное значение ULID, сгенерированное с помощью встроенной функции Laravel:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; use IlluminateSupportFacadesValidator; use IlluminateSupportStr; class OrderController extends Controller { public function store(Request $request) { $validUlid = Str::ulid(); $data = [ 'order_id' => $validUlid, 'status' => 'pending', ]; $validator = Validator::make($data, [ 'order_id' => 'required|ulid', 'status' => 'required|string', ]); if ($validator->passes()) { echo 'Validation passed. Order ID: ' . $data['order_id']; } else { echo 'Validation failed'; } } } ?>

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

"Validation passed. Order ID: 01H2XJ1M4R8Q3Z5T7W9A0B1C2D"

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

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