Команда Laravel випустила версію v12.16.0, що містить новий плавний метод валідації Rule::contains(), правило валідації in_array_keys, новий метод Arr::hasAll() та інше:
Стив Бауман додав правило валідації in_array_keys, яке перевіряє, чи містить масив принаймні один з вказаних ключів:
$validator = Validator::make($request->all(), [
'config' => 'array|in_array_keys:api_key,access_token,oauth_token',
'config.api_key' => 'nullable|string|min:32|max:64',
'config.access_token' => 'nullable|string|min:40',
'config.oauth_token' => 'nullable|string|starts_with:oauth_',
]);
За словами запиту на злиття, метою цього правила є перевірка наявності хоча б одного з зазначених ключів у масиві, оскільки немає вбудованого способу зробити це без кастомного правила:
Хоча правило required_array_keys забезпечує наявність усіх зазначених ключів в масиві, немає вбудованого способу перевірити, чи має масив хоча б один з вказаних ключів.
@devajmeireles додав можливість використовувати прихований атрибут контексту, передаючи другий булевий аргумент hidden. Атрибут Context був доданий у Laravel 12.15, що дозволяє впроваджувати значення контексту:
public function __construct(#[Context('user', hidden: true)] User $user)
Дивіться Запит на злиття #55799 для деталей.
Стив Бауман додав метод contains() до класу Rule, який доповнює версію цього правила для рядків:
use Illuminate\Validation\Rule;
// До
Validator::make($request->all(), [
'roles' => [
'required',
'array',
'contains:'.implode(',', array_column([Role::Admin, Role::Editor], 'value')),
],
]);
// Після
Validator::make($request->all(), [
'roles' => [
'required',
'array',
Rule::contains([Role::Admin, Role::Editor]),
],
]);
Документацію з валідації було оновлено з прикладом використання плавної версії правила.
@devajmeireles додав метод hasAll() до допоміжного класу Arr:
use Illuminate\Support\Arr;
$array = ['name' => 'Тейлор', 'language' => 'php'];
Arr::hasAll($array, ['name']); // true
Arr::hasAll($array, ['name', 'language']); // true
Arr::hasAll($array, ['name', 'ide']); // false
@devajmeireles додав метод toUri(), який може перетворити рядок на екземпляр URI:
$sentence = 'Перейдіть на {https://euhosting.com/support} для підтримки.';
$uri = str($sentence)->between('{', '}')->toUri();
if (auth()->user()->isVip()) {
$uri = $uri->withQuery(['customer' => auth()->user()->publicId()])
->withQuery(['priority' => 'emergency']);
}
return $uri->value();
Повний список нових функцій та оновлень ви можете знайти нижче, а також різницю між версіями 12.15.0 та 12.16.0 на GitHub. Примітки до випуску взяті безпосередньо із зміни:
TestResponse::assertSessionMissing() при наданні масиву ключів від @crynobone у https://github.com/laravel/framework/pull/55800Context атрибути для взаємодії з прихованими даними від @devajmeireles у https://github.com/laravel/framework/pull/55799Arr::hasAll від @devajmeireles у https://github.com/laravel/framework/pull/55815ResponseFactory, щоб він також приймав null зворотний виклик від @crynobone у https://github.com/laravel/framework/pull/55833toUri у клас Stringable від @devajmeireles у https://github.com/laravel/framework/pull/55862is_integer() на is_int(), щоб відповідати Laravel Pint від @xurshudyan у https://github.com/laravel/framework/pull/55851in_array_keys для перевірки наявності вказаних ключів масиву від @stevebauman у https://github.com/laravel/framework/pull/55807Rule::contains від @stevebauman у https://github.com/laravel/framework/pull/55809Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!
Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю
Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом