Команда Laravel цього тижня представила версію 12.36.0, яка включає контроль паралельності для методів HTTP pool та batch, а також запроваджує два нові методи для колекцій Eloquent і багато іншого. Додатково Inertia 2.x отримала підтримку для View Transitions.
Pascal Baljet додав можливість переходів у вигляді перегляду через View Transition API в Inertia 2.x. Це працює з переходами роутера, посиланнями та глобально:
router.visit('/another-page', { viewTransition: true })
// Передати зворотній виклик
router.visit('/another-page', {
viewTransition: (transition) => {
transition.ready.then(() => doSomething())
transition.updateCallbackDone.then(() => doSomething())
transition.finished.then(() => doSomething())
},
})
Це також працює з компонентом <Link/>, який може приймати пустий атрибут або зворотній виклик:
<template>
<Link href="/another-page" view-transition> Перейти </Link>
<Link href="/another-page" :view-transition="(transition) => transition.finished.then(...)">
Перейти
</Link>
</template>
Детальніше про View Transitions можна дізнатися в документації.
Wendell Adriel додав контроль паралельності для методів Http::pool() і Http::batch(). Це дозволяє контролювати кількість одночасних запитів, які може виконувати HTTP-клієнт:
$responses = Http::pool(fn (Pool $pool) => [
$pool->get('http://localhost/first'),
$pool->get('http://localhost/second'),
$pool->get('http://localhost/third'),
], 2); // Встановлює максимальну кількість одночасних HTTP-запитів на 2
$responses = Http::batch(fn (Batch $batch) => [
$batch->as('first')->get('http://localhost/first'),
$batch->as('second')->get('http://localhost/second'),
$batch->as('third')->get('http://localhost/third'),
])->concurrency(2)->send(); // Встановлює максимальну кількість одночасних HTTP-запитів на 2
Деталі реалізації можна знайти в Pull Request #57555.
Luke Kuzmish додав нові методи для колекцій Eloquent, що дозволяють додавати атрибути до кожної моделі:
// До
User::query()->fillAndInsert(
User::factory()
->count(100)
->make()
->each(fn ($u) => $u->setAppends([]))
);
// Після
User::query()->fillAndInsert(
User::factory()
->count(100)
->make()
->withoutAppends()
);
Деталі реалізації можна знайти в Pull Request #57561.
Florian Raith впровадив оновлення, яке розширює можливість форматування текстів повідомлень, щоб вони могли починатися з великих літер:
// Приклад
'same' => 'Поле :attribute повинно відповідати :other.',
// До: "Поле Password повинно відповідати :Other."
// Після: "Поле Password повинно відповідати підтвердженню Password."
Детальніше в Pull Request #57556.
Повний список нових функцій та оновлень доступний нижче, а також різниця між версіями 12.35.0 та 12.36.0 на GitHub. Наступні примітки до випуску взяті з журналу змін:
Uri @browner12 у https://github.com/laravel/framework/pull/57549jsonSerialize() з використанням match-виразу @amirhshokri у https://github.com/laravel/framework/pull/57552setAppends та withoutAppends @cosmastech у https://github.com/laravel/framework/pull/57561