Використання Flash Session Data у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 березня, 2025
Ознайомтеся з простими та ефективними методами управління тимчасовими даними сесій у Laravel! У нашій статті розглянуто, як використовувати методи flash для реалізації повідомлень про статус, сповіщень та інших важливих нотаток у вашому додатку

Laravel надає зручну систему для управління тимчасовими сесійними даними через методи flash. Цей підхід ідеально підходить для реалізації статусних повідомлень, сповіщень та інших короткочасних повідомлень у вашому додатку.

Основна реалізація зберігає дані лише на наступний запит:

$request->session()->flash('status', 'Завдання виконано успішно!');

Laravel пропонує кілька спеціалізованих методів flash для різних ситуацій:

// Продовжити термін дії всіх flash даних на один запит
$request->session()->reflash();
 
// Вибірково продовжити конкретні flash елементи
$request->session()->keep(['username', 'email']);
 
// Flash дані, доступні лише в поточному запиті
$request->session()->now('status', 'Операцію завершено');

Ось як ці методи працюють у практичній системі сповіщень:

class NotificationController extends Controller
{
    public function processForm(Request $request)
    {
        try {
            DB::transaction(function () use ($request) {
                // Обробка даних форми
                $result = $this->processData($request->all());

                // Flash повідомлення про успіх для наступного запиту
                $request->session()->flash('message', 'Форма оброблена успішно');
                $request->session()->flash('details', [
                    'id' => $result->id,
                    'timestamp' => now()->toDateTimeString()
                ]);

                // Умовне збереження на основі вподобань користувача
                if ($request->has('show_details')) {
                    $request->session()->keep(['details']);
                }
            });

            return redirect()->route('dashboard');

        } catch (Exception $e) {
            logger()->error('Обробка форми не вдалася', ['error' => $e->getMessage()]);

            // Негайна помилка для поточного запиту
            $request->session()->now('error', 'Обробка не вдалася');

            return back()->withInput();
        }
    }
}

Flash сесійні дані забезпечують спрощений підхід до повідомлень на основі запитів без складнощів, пов’язаних із постійними механізмами зберігання, що робить ваш додаток більш чутливим та зручним для користувачів