Правило in_array_keys у Laravel: перевірка часткових ключів масиву

Перекладено ШІ 1 Laravel News 02 червня, 2026

Правило валідації `in_array_keys` у Laravel пропонує елегантне вирішення для перевірки, чи містить масив принаймні один ключ з вказаного набору. Досліджуйте, як це правило допомагає ефективно управляти конфігураційними сценаріями і спростити процес валідації у ваших додатках!

Правило валідації in_array_keys у Laravel пропонує елегантне рішення для ситуацій, коли масиви повинні містити принаймні один ключ із зазначеного набору, без вимоги до наявності всіх ключів.

Це правило вирішує поширені проблеми валідації в гнучких системах конфігурації, де користувачам потрібно обрати один або кілька варіантів з численних допустимих опцій:

$validator = Validator::make($data, [
    'settings' => 'array|in_array_keys:email,sms,push',
]);

Правило успішно проходить валідацію, якщо масив містить будь-який з указаних ключів, що робить його ідеальним для сценаріїв з необов'язковими налаштуваннями.

class NotificationController extends Controller
{
    public function updateChannels(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'channels' => 'required|array|in_array_keys:email_notifications,sms_alerts,push_messages',
            'channels.email_notifications' => 'nullable|array',
            'channels.email_notifications.address' => 'required_with:channels.email_notifications|email',
            'channels.email_notifications.frequency' => 'required_with:channels.email_notifications|in:immediate,daily,weekly',
            'channels.sms_alerts' => 'nullable|array',
            'channels.sms_alerts.phone' => 'required_with:channels.sms_alerts|regex:/^\+[1-9]\d{1,14}$/',
            'channels.sms_alerts.carrier' => 'required_with:channels.sms_alerts|string',
            'channels.push_messages' => 'nullable|array',
            'channels.push_messages.device_token' => 'required_with:channels.push_messages|string|min:64',
        ]);
 
        if ($validator->fails()) {
            return response()->json(['errors' => $validator->errors()], 422);
        }
 
        $user = $request->user();
        $channels = $request->input('channels');
 
        foreach ($channels as $channelType => $config) {
            $this->configureNotificationChannel($user, $channelType, $config);
        }
 
        return response()->json(['message' => 'Канали сповіщень успішно оновлені']);
    }
 
    private function configureNotificationChannel($user, $type, $config)
    {
        $user->notificationChannels()->updateOrCreate(
            ['channel_type' => $type],
            ['configuration' => $config, 'is_active' => true]
        );
    }
}

Цей підхід до валідації відмінно підходить для конфігурацій платіжних систем, інтеграцій із соціальними мережами та мульти-користувацьких застосунків, де доступні різні набори функцій

Популярні

Інше, що варто прочитати

14 Оновлено 02 червня, 2026

Claude Agent тепер інтегрований в AI Assistant для PhpStorm

Ви коли-небудь задумувалися, як полегшити свою роботу в Laravel? У нашій статті ми розглядаємо, як інтеграція Claude Code в PhpStorm може підвищити вашу продуктивність, спростивши процес написання коду та навчання нових розробників. Читайте далі, щоб дізнатися більше про переваги та функціональність цього потужного поєднання

41 Оновлено 02 червня, 2026

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення

13 Оновлено 02 червня, 2026

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

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