У Laravel 11.38 з'явилося правило валідації електронної пошти з флюїдним підходом

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 16 січня, 2025
Цього тижня команда Laravel випустила версію 11.38 з новими цікавими функціями, які обов'язково полегшать ваше програмування. Чи готові ви дізнатися про новий гнучкий валідатор електронної пошти та методи, що спростять вашу роботу

Цього тижня команда Laravel випустила версію v11.38, яка включає нове правило валідації Email, можливість отримати об'єкт запиту або його значення у вигляді масиву, метод finally() для конвеєра та багато іншого.

# Нове правило валідації Email

Сандер Мюллер додав нове правило валідації Email, яке забезпечує аналогічний досвід, як правила для паролів і файлів.

// До
$request->validate([
  'email' => ['required', 'string', 'email', 'strict', 'dns'],
]);
 
// Після
$request->validate([
  'email' => ['required', 'string', Rule::email()->strict()->dns()],
]);

Деталі можна знайти у Pull Request #54067.

# Додано метод array() до FormRequest та Fluent

Стів Бауман додав метод array(), який дозволяє перетворити значення з об'єкта запиту або екземпляра Fluent:

$fluent = new Fluent(['email' => 'test@example.com']);
 
$fluent->array('email'); // ['test@example.com']
 
// ?email=test@example.com
$request->array('email'); // ['test@example.com']

Деталі можна знайти у Pull Request #54177.

# Додано метод finally() до конвеєра

Нуну Мадуро запропонував метод finally(), який надає змогу вказати зворотний виклик, що виконується незалежно від результату конвеєра.

// До
try {
    $result = Pipeline::send($deployment)
        ->through([PipeOne::class, PipeTwo::class]) // один з конвеєрів не викликає $next або викидає виключення...
        ->then(fn () => $deployment->deploy());
} finally {
    // очищення...
}
 
// Після
$result = Pipeline::send($deployment)
     ->through([PipeOne::class, PipeTwo::class]) // один з конвеєрів не викликає $next або викидає виключення...
     ->finally(fn () => /** очищення */)
     ->then(fn () => $deployment->deploy());

Деталі можна знайти у Pull Request #54110.

# Додано прапорець --except до команд Artisan Optimize

Джон Еріксон запропонував опцію --except для пропуску команд під час виконання оптимізацій. Цей новий параметр дозволяє вказати часткові ключі та перелік команд для виключення через кому:

# Пропустити за назвою команди
php artisan optimize --except route:cache
 
# Пропустити за ключем
php artisan optimize --except route
 
# Пропустити перелік ключів або назв команд через кому
php artisan optimize:clear --except route,view:cache

# Фільтрація маршрутів за дією в route:list

@miccehedin додав опцію --action для знаходження маршрутів з використанням конкретного рядка дії:

route:list --action=TestController

# Примітки до випуску

Детальний список нових функцій та оновлень ви можете знайти нижче, а також порівняння версій 11.37.0 та 11.38.0 на GitHub. Наступні примітки взято безпосередньо з changelog:

# v11.38.0