Функция back
Функция back применяется для генерации ответа перенаправления
на предыдущий URL, с которого был выполнен запрос. Она использует
данные сессии и заголовок 'Referer' для определения
предыдущего адреса. Первым параметром передаётся статус-код
(по умолчанию 302), вторым - заголовки для ответа.
Функция возвращает экземпляр класса RedirectResponse.
Синтаксис
<?php
back($status = 302, $headers = [], $fallback = false);
?>
Пример
Давайте выполним перенаправление на предыдущую страницу из контроллера после успешного сохранения данных:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function store(Request $request)
{
$article = Article::create([
'title' => $request->title,
'text' => $request->text,
]);
return back()->with('success', 'Article created successfully');
}
}
?>
Пример
Давайте используем функцию back с пользовательским
статус-кодом и заголовками:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function update(Request $request, $id)
{
// ... update logic
return back(303, ['X-Custom-Header' => 'Value']);
}
}
?>
Пример
Давайте используем функцию back с сохранением
введённых данных для их отображения при ошибке валидации:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function update(Request $request, $id)
{
$request->validate([
'title' => 'required|max:255',
'text' => 'required',
]);
$article = Article::find($id);
$article->update($request->all());
return back()->withInput();
}
}
?>
Пример
Давайте используем функцию back в шаблоне Blade
для создания кнопки возврата:
<div>
<h1>{{ $article->title }}</h1>
<p>{{ $article->text }}</p>
<a href="{{ back()->getTargetUrl() }}">Go back</a>
</div>
Результат выполнения кода:
<div>
<h1>My article</h1>
<p>This is article text</p>
<a href="/previous/page">Go back</a>
</div>
Пример
Давайте выполним перенаправление на предыдущую страницу с передачей ошибок в сессию:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function destroy(Request $request, $id)
{
$article = Article::find($id);
if (!$article) {
return back()->withErrors(['Article not found']);
}
$article->delete();
return back()->with('success', 'Article deleted');
}
}
?>
Смотрите также
-
функция
redirect,
которая выполняет перенаправление на указанный URL -
функция
route,
которая генерирует URL по имени маршрута -
функция
url,
которая генерирует полный URL для переданного пути -
класс
RedirectResponse,
который представляет ответ перенаправления