Как получить доступ к другому контроллеру изнутри контроллера Symfony2
Мне нужно получить доступ к методу из другого контроллера внутри другого контроллера. Как мне это сделать? Могу ли я использовать метод this->get
?
Можно ли включить контроллер в мой текущий контроллер и сделать его объектом и получить доступ к этому методу через объект? Это "нормально", чтобы сделать это таким образом?
Я хочу вызвать метод формы --- newAction другого контроллера.
Ответы
Ответ 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 также найдет что-то для этого.