Метод flash
Метод flash класса Request применяется для сохранения данных в сессии на один следующий запрос. После того как данные были получены в следующем запросе, они автоматически удаляются из сессии. Это удобно для передачи сообщений пользователю после выполнения операции, например, после перенаправления.
Синтаксис
<?php
$request->flash();
?>
Метод flash не принимает параметров и возвращает экземпляр текущего запроса для построения цепочек вызовов.
Пример
Сохраним данные из запроса в сессии с помощью метода flash:
<?php
use IlluminateHttpRequest;
Route::post('/user/update', function (Request $request) {
$request->flash();
return redirect('/user/profile');
});
?>
Пример
Используем метод flash вместе с методом only для сохранения только определённых полей:
<?php
use IlluminateHttpRequest;
Route::post('/user/update', function (Request $request) {
$request->only(['name', 'email'])->flash();
return redirect('/user/profile');
});
?>
Результат выполнения кода в следующем запросе:
[
"name" => "John Doe",
"email" => "john@example.com"
]
Пример
Сохраним данные и сразу получим их в следующем запросе с помощью метода old:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
class UserController extends Controller
{
public function update(Request $request)
{
$request->flash();
return redirect('/user/edit');
}
public function edit(Request $request)
{
$name = $request->old('name', 'Default Name');
$email = $request->old('email', 'default@example.com');
echo "Name: " . $name . ", Email: " . $email;
}
}
?>
Результат выполнения кода после перенаправления:
"Name: John Doe, Email: john@example.com"
Пример
Используем метод flash для сохранения данных с последующим их извлечением в шаблоне Blade:
<?php
use IlluminateHttpRequest;
use IlluminateSupportFacadesRoute;
Route::get('/user/profile', function () {
return view('profile');
});
Route::post('/user/update', function (Request $request) {
$request->flash();
return redirect('/user/profile');
});
?>
@if (session()->has('_old_input'))
<div>
<p>Name: {{ old('name') }}</p>
<p>Email: {{ old('email') }}</p>
</div>
@endif
<form method="POST" action="/user/update">
@csrf
<input type="text" name="name" value="{{ old('name') }}">
<input type="email" name="email" value="{{ old('email') }}">
<button type="submit">Update</button>
</form>