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

Перекладено ШІ 2 Laravel News 26 червня, 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]
        );
    }
}

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

Популярні

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

10 Оновлено 26 червня, 2026

Усе, що ми знаємо про Laravel 12

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

11 Оновлено 26 червня, 2026

Laravel: шлях до створення справді дієздатних AI-агентів

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

15 Оновлено 26 червня, 2026

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

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