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

Перекладено ШІ
Оригінал: 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() пропонують зручний спосіб обробки необов'язкових даних запиту, зберігаючи читабельність коду