Обробка відсутніх даних запиту в Laravel

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 05 лютого, 2025
Досліджуйте елегантні методи Laravel для керування відсутніми даними запиту за допомогою missing() та whenMissing(). Це спростить обробку необов'язкових полів і підвищить читабельність вашого коду — не пропустіть можливість удосконалити свої навички!

Laravel надає елегантні методи для управління відсутніми даними запиту через missing() та whenMissing(). Ці методи спрощують обробку необов'язкових полів і встановлення значень за замовчуванням, роблячи ваш код більш зрозумілим і зручним для підтримки.

// Перевірка на відсутність даних
if ($request->missing('name')) {
    $name = 'Гість';
}
 
// Обробка відсутніх даних з колбеками
$request->whenMissing('email', function () {
    // Обробка відсутньої електронної пошти
});

Розглянемо приклад системи оновлення налаштувань:

// app/Controllers/SettingsController.php
<?php
 
namespace App\Http\Controllers;
 
use App\Models\Settings;
use Illuminate\Http\Request;
 
class SettingsController extends Controller
{
    public function update(Request $request, Settings $settings)
    {
        $updates = [];
        // Обробка налаштувань теми
        $request->whenMissing('theme',
            function() use (&$updates) {
                $updates['theme'] = [
                    'mode' => 'system',
                    'color' => 'blue'
                ];
            },
            function() use (&$updates, $request) {
                $updates['theme'] = [
                    'mode' => $request->input('theme.mode', 'light'),
                    'color' => $request->input('theme.color', 'blue')
                ];
            }
        );
        // Обробка налаштувань сповіщень
        if ($request->missing('notifications')) {
            $updates['notifications'] = [
                'email' => true,
                'push' => false,
                'frequency' => 'daily'
            ];
        } else {
            $updates['notifications'] = $request->notifications;
        }
        $settings->update($updates);
        return response()->json([
            'message' => 'Налаштування успішно оновлено',
            'settings' => $settings->fresh()
        ]);
    }
}

Приклад використання:

// Вхідні дані з мінімальною інформацією
{
    "notifications": {
        "email": true,
        "push": true
    }
}
// Відповідь
{
    "message": "Налаштування успішно оновлено",
    "settings": {
        "theme": {
            "mode": "system",
            "color": "blue"
        },
        "notifications": {
            "email": true,
            "push": true,
            "frequency": "daily"
        }
    }
}
// Вхідні дані з повною інформацією
{
    "theme": {
        "mode": "dark",
        "color": "purple"
    },
    "notifications": {
        "email": false,
        "push": true,
        "frequency": "weekly"
    }
}

Методи missing() та whenMissing() пропонують зручний спосіб обробки необов'язкових даних запиту, зберігаючи читабельність коду

Популярні

Logomark Logotype

Простий пакет RabbitMQ для Laravel

Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!

Logomark Logotype

Використання штучного інтелекту для управління перекладами в Laravel

Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!

Logomark Logotype

Як задокументувати кілька API в Laravel за допомогою Scramble

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