Какой есть в Symfony аналог Laravel — Redirect::back()->withErrors()?

В Symfony существует несколько способов реализации функциональности, аналогичной методу Redirect::back()->withErrors() в Laravel.

Один из способов - использование класса SymfonyComponentHttpFoundationRedirectResponse. Этот класс предоставляет возможность создания HTTP-ответа с кодом перенаправления (302) и установкой заголовка Location на предыдущую страницу.

Для передачи ошибок между запросами можно использовать класс SymfonyComponentHttpFoundationSessionSession. Этот класс предоставляет возможность сохранения данных между запросами в сессии. В данном случае можно сохранить ошибки в сессии перед перенаправлением на предыдущую страницу, а затем получить их на следующем запросе.

Пример использования RedirectResponse и Session:

use SymfonyComponentHttpFoundationRedirectResponse;
use SymfonyComponentHttpFoundationSessionSession;
use SymfonyComponentHttpFoundationSessionFlashFlashBagInterface;

// в контроллере после валидации формы

// создаем объект сессии
$session = new Session();
$session->start();

// сохраняем ошибки в сессии
$errors = [
    'error1' => 'Ошибка 1',
    'error2' => 'Ошибка 2',
];
$session->getFlashBag()->add('errors', $errors);

// создаем объект RedirectResponse для перенаправления на предыдущую страницу
$redirectUrl = $request->headers->get('referer');
$response = new RedirectResponse($redirectUrl);

// возвращаем ответ с перенаправлением
return $response;

Затем, на странице предыдущего запроса, можно получить сохраненные ошибки из сессии и отобразить их пользователю:

use SymfonyComponentHttpFoundationSessionSession;
use SymfonyComponentHttpFoundationSessionFlashFlashBagInterface;

// в контроллере для предыдущей страницы

// создаем объект сессии
$session = new Session();
$session->start();

// получаем ошибки из сессии
$errors = $session->getFlashBag()->get('errors');

// отображаем ошибки
foreach ($errors as $errorKey => $errorMessage) {
    echo $errorKey . ': ' . $errorMessage . '<br>';
}

Кроме того, в Symfony можно использовать компонент SymfonyComponentHttpFoundationRequestStack, чтобы получить объект Request текущего запроса и его предыдущий адрес (referer). Это позволит вам получать referer без необходимости явно передавать его в контроллер.