Подтвердить что ты не робот

Как получить доступ к другому контроллеру изнутри контроллера Symfony2

Мне нужно получить доступ к методу из другого контроллера внутри другого контроллера. Как мне это сделать? Могу ли я использовать метод this->get?

Можно ли включить контроллер в мой текущий контроллер и сделать его объектом и получить доступ к этому методу через объект? Это "нормально", чтобы сделать это таким образом?

Я хочу вызвать метод формы --- newAction другого контроллера.

4b9b3361

Ответ 1

Вы можете определить свой контроллер как службу, а затем получить его на другом контроллере.

В вашем services.yml определите необходимый контроллер как службу:

services:
    your_service_name:
        class: YourCompany\YourBundle\Controller\YourController

Затем в любом контроллере вы сможете получить эту услугу через контейнер:

$yourController = $this->get('your_service_name');

Существует некоторая полезная информация о Контроллеры как Сервисы в документации

Ответ 2

Если вы не хотите определять класс как сервис, так как это не очень хорошая практика для меня, и @Qoop цитирует Фабьена, говоря то же самое, вы можете использовать переадресацию:

http://symfony.com/doc/current/controller/forwarding.html

public function indexAction($name)
{
    $response = $this->forward('AcmeHelloBundle:Hello:fancy', array(
        'name'  => $name,
        'color' => 'green',
    ));

    // ... further modify the response or return it directly

    return $response;
}

Если вам нужно встроить вывод внутреннего действия контроллера в шаблон, документация по для Symfony также найдет что-то для этого.