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 сесійні дані забезпечують спрощений підхід до повідомлень на основі запитів без складнощів, пов’язаних із постійними механізмами зберігання, що робить ваш додаток більш чутливим та зручним для користувачів