Як пересилати запити іншому контролеру

Дата оновлення перекладу 2022-11-01

Як пересилати запити іншому контролеру

Хоча це і не дуже розповсюджено, ви також можете робити пересилання внутрішньо іншому контролеру за допомогою методу forward(). Замість того, щоб перенапавляти браузер користувача, він робить "внутрішній" підзапит та викликає інший контролер. Метод forward() повертає обʼєкт Response, який повертається з того контролера:

1
2
3
4
5
6
7
8
9
10
11
public function index($name)
{
    $response = $this->forward('AppBundle:Something:fancy', array(
        'name'  => $name,
        'color' => 'green',
    ));

    // ... далі налаштовувати відповідь або повернути її напряму

    return $response;
}

Масив, переданий методу, стає аргументами для результуючого контролера. Метод цільового контролера може виглядати якось так:

1
2
3
4
public function fancy($name, $color)
{
    // ... створити та повернути обʼєкт Відповіді
}

Так само, як і при створенні контролера для маршруту, порядок аргументів методу fancy() не має значення: співставлення проводиться за іменем.