Как пересылать запросы другому контроллеру
Дата обновления перевода 2023-09-01
Как пересылать запросы другому контроллеру
Хоть это и не очень распространено, вы также можете делать пересылку внутренне другому контроллеру с помощью метода forward().
Вместо того, чтобы перенаправлять браузер пользователя, он делает "внутренний"
подзапрос и вызывает другой контроллер. Метод forward()
возвращает объект
Response, который возвращается из
того контроллера:
1 2 3 4 5 6 7 8 9 10 11
public function index($name): Response
{
$response = $this->forward('AppBundle:Something:fancy', array(
'name' => $name,
'color' => 'green',
));
// ... далее настраивать ответь или вернуть его напрямую
return $response;
}
Массив, переданный методу, становится аргументами для результирующего контроллера. Метод целевого контроллера может выглядеть как-то так:
1 2 3 4
public function fancy(string $name, string $color): Response
{
// ... создать и вернуть объект Ответа
}
Так же, как и при создании контроллера для маршрута, порядок аргументов
метода fancy()
не имеет значения: соответствие проводится по имени.