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