Цього тижня команда 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
- Виправлено діапазон зсуву в docblock від @simon-tma в https://github.com/laravel/framework/pull/54062
- [11.x] Виправлено критичну зміну в
RefreshDatabaseвід @SjorsO в https://github.com/laravel/framework/pull/54075 - [11.x] Використання батьківських методів у трейті
HasUniqueStringIdsвід @hafezdivandari в https://github.com/laravel/framework/pull/54096 - [11.x] Додано метод
finallyдо допоміжного конвеєра від @nunomaduro в https://github.com/laravel/framework/pull/54110 - Додано підтримку відсутніх параметрів для з'єднання PostgreSQL від @Maniload в https://github.com/laravel/framework/pull/54101
- Виправлено: не встановлювати newLineWritten на true, якщо рівень детальності не дозволяє вивід від @ConnySjoblom в https://github.com/laravel/framework/pull/54127
- [11.x] Додано підтримку для мутацій повернення атрибутів до методу
Eloquent/Builderpluck від @MattBradleyDev в https://github.com/laravel/framework/pull/54130 - [11.x] Виправлено неправильний
@mixinу трейтіSoftDeletesвід @nunomaduro в https://github.com/laravel/framework/pull/54140 - [11.x] Заміна рядкових імен класів на константи ::class від @panakour в https://github.com/laravel/framework/pull/54134
- [11.x] Виправлено виклики
times()від @browner12 в https://github.com/laravel/framework/pull/54141 - [11.x] Дрібні вдосконалення читабельності від @browner12 в https://github.com/laravel/framework/pull/54117
- Обробка factory=null у ConnectException під час запису запиту-відповіді в PendingRequest від @StSarc в https://github.com/laravel/framework/pull/54121
- [11.x] Уточнення повідомлень про помилки для виявлення втрати з'єднань (сумісність з Debian bookworm) від @mfn в https://github.com/laravel/framework/pull/54111
- [11.x] Виправлено: фільтрація шляхів постачальника з реєстрованих загрузників у Application::inferBasePath від @calebdw в https://github.com/laravel/framework/pull/54119
- [11.x] Дозволити винятки в командах
optimizeіoptimize:clearвід @jonerickson в https://github.com/laravel/framework/pull/54070 - Додано фільтр дій до route:list від @miccehedin в https://github.com/laravel/framework/pull/54135
- Без явної інструкції
USE databaseвід @TheLevti в https://github.com/laravel/framework/pull/54132 - Додано підтримку для користувацьких даних та каналів у трансляціях від @JanneDeVos в https://github.com/laravel/framework/pull/54099
- [11.x] Додано правило валідації
Emailвід @SanderMuller в https://github.com/laravel/framework/pull/54067 - [11.x] Підтримка middleware для специфічного методу в ресурсних маршрутах від @MrPunyapal в https://github.com/laravel/framework/pull/53313
- [11.x] Підтримка агрегатів бази даних за групами (нові методи) від @GromNaN в https://github.com/laravel/framework/pull/53679
- Виправлено тип повернення для відповідності функціоналу від @willpower232 в https://github.com/laravel/framework/pull/54148
- [11.x] Перейменування Traveler на Passable та Stops на Pipes від @mathiasgrimm в https://github.com/laravel/framework/pull/54142
- [11.x] Додано
Dispatchable::newPendingDispatch()від @cosmastech в https://github.com/laravel/framework/pull/54153 - [11.x] Додано
FormRequest::array($key)таFluent::array($key)від @stevebauman в https://github.com/laravel/framework/pull/54177 - [11.x] Зроблено методи
HasRelationshipsзагальними від @SanderMuller в https://github.com/laravel/framework/pull/54174 - [11.x] Пройдено тести на Herd від @SanderMuller в https://github.com/laravel/framework/pull/54171
- Скасування “Виправлення: обробка змішаних значень у compileInsert” від @crynobone в https://github.com/laravel/framework/pull/54169
- [11.x] Виправлено docblock для
PendingDispatch@getJob()від @cosmastech в https://github.com/laravel/framework/pull/54158 - Передано параметри подіям міграції від @willpower232 в https://github.com/laravel/framework/pull/54151
- Кодування значень кешу для SQLite в base64 для запобігання помилок через символи \0 від @adamkiss в https://github.com/laravel/framework/pull/54178
- [11.x] Виправлено тип повернення правила валідації з викликом від @axlon в https://github.com/laravel/framework/pull/54179