У Laravel 12.16 додано правило валідації "In Array Keys"

1
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 грудня, 2025
Вийшла нова версія Laravel 12.16.0, яка пропонує захоплюючі нововведення, такі як правило валідації `in_array_keys()` та новий метод `Arr::hasAll()`. Чи готові ви дізнатися, як ці нові функції можуть спростити вашу роботу? Читайте далі, щоб дізнатися більше про нові можливості цієї версії

Команда Laravel випустила версію v12.16.0, що містить новий плавний метод валідації Rule::contains(), правило валідації in_array_keys, новий метод Arr::hasAll() та інше:

# Правило валідації in_array_keys

Стив Бауман додав правило валідації 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 забезпечує наявність усіх зазначених ключів в масиві, немає вбудованого способу перевірити, чи має масив хоча б один з вказаних ключів.

# Взаємодія з прихованим контекстом у атрибуті Context

@devajmeireles додав можливість використовувати прихований атрибут контексту, передаючи другий булевий аргумент hidden. Атрибут Context був доданий у Laravel 12.15, що дозволяє впроваджувати значення контексту:

public function __construct(#[Context('user', hidden: true)] User $user)

Дивіться Запит на злиття #55799 для деталей.

# Додано метод contains() для Rule

Стив Бауман додав метод 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]),
    ],
]);

Документацію з валідації було оновлено з прикладом використання плавної версії правила.

# Метод Arr::hasAll()

@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

# Метод Stringable::toUri()

@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. Примітки до випуску взяті безпосередньо із зміни:

# v12.16.0

Популярні

Logomark Logotype

Створення CLI-додатка за допомогою Laravel та Docker

Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!

Logomark Logotype

Перетворення даних у типобезпечні DTO за допомогою пакету Data Model

Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю

Logomark Logotype

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом