Правило валідації 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]
);
}
}
Цей підхід до валідації відмінно підходить для конфігурацій платіжних систем, інтеграцій із соціальними мережами та мульти-користувацьких застосунків, де доступні різні набори функцій
Ви коли-небудь задумувалися, як полегшити свою роботу в Laravel? У нашій статті ми розглядаємо, як інтеграція Claude Code в PhpStorm може підвищити вашу продуктивність, спростивши процес написання коду та навчання нових розробників. Читайте далі, щоб дізнатися більше про переваги та функціональність цього потужного поєднання
PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення
Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!