РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
532 of 1392 menu

Метод flash

Метод flash класса Session в Laravel используется для записи данных в сессию с пометкой "однократного использования". После того как данные будут извлечены из сессии при следующем запросе, они автоматически удаляются. Первым параметром передаётся ключ, вторым - значение, которое нужно сохранить. Если передан только ключ, метод возвращает текущее flash-значение или null.

Синтаксис

<?php session()->flash($key, $value); ?>

Пример

Сохраним сообщение об успешной операции в сессии с помощью метода flash:

<?php namespace AppHttpControllers; use AppModelsProduct; use IlluminateHttpRequest; class ProductController extends Controller { public function store(Request $request) { // Product creation logic $product = new Product(); $product->name = $request->input('name'); $product->save(); session()->flash('success', 'Product created successfully'); return redirect()->route('products.index'); } } ?>

После редиректа в методе index мы можем получить сохранённое сообщение:

<?php namespace AppHttpControllers; use AppModelsProduct; class ProductController extends Controller { public function index() { $products = Product::all(); $message = session()->get('success'); return view('products.index', ['products' => $products, 'message' => $message]); } } ?>

Результат выполнения кода:

"Product created successfully"

Пример

Метод flash также может использоваться для сохранения нескольких значений одновременно с помощью массива:

<?php namespace AppHttpControllers; use AppModelsUser; use IlluminateHttpRequest; class UserController extends Controller { public function update(Request $request, $id) { $user = User::findOrFail($id); $user->name = $request->input('name'); $user->save(); session()->flash([ 'success' => 'User updated successfully', 'user_id' => $user->id ]); return redirect()->route('users.index'); } } ?>

Получение flash-данных в представлении:

@if (session()->has('success')) <div class="alert alert-success"> {{ session()->get('success') }} </div> @endif @if (session()->has('user_id')) <p>Updated user ID: {{ session()->get('user_id') }}</p> @endif

Пример

Если вы хотите сохранить flash-данные, но при этом не удалять их при следующем запросе, можно использовать метод reflash, который сохраняет все текущие flash-данные ещё на один запрос:

<?php namespace AppHttpControllers; use AppModelsOrder; use IlluminateHttpRequest; class OrderController extends Controller { public function process(Request $request) { // Some processing logic $order = new Order(); $order->status = 'processed'; $order->save(); session()->flash('order_id', $order->id); // Preserve flash data for another request session()->reflash(); return redirect()->route('orders.summary'); } } ?>

В этом случае flash-данные будут доступны не только на следующем, но и на последующем запросе.

Смотрите также

  • метод Request::flash,
    который сохраняет в сессию данные запроса
  • метод Session::get,
    который получает данные из сессии
  • метод Session::put,
    который сохраняет данные в сессии на длительный срок
  • метод RedirectResponse::with,
    который позволяет передавать flash-данные при редиректе
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить