Мне нужно получить доступ к методу с другого контроллера внутри другого контроллера. Как мне это сделать? Могу ли я использовать метод this->get
?
Можно ли включить контроллер в мой текущий контроллер и сделать его объектом и получить доступ к этому методу через объект? Это нормально?
Я хочу вызвать метод формы — newAction другого контроллера.
Вы можете определить свой контроллер как службу, а затем получить его на другом контроллере.
В your services.yml
определите необходимый контроллер как услугу:
services: your_service_name: class: YourCompany\YourBundle\Controller\YourController
Затем в любом контроллере вы сможете получить эту услугу через контейнер:
$yourController = $this->get('your_service_name');
Существует некоторая полезная информация о контроллерах как услуги в документации
Если вы не хотите определять класс как услугу, поскольку он не считает меня хорошей практикой, а @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 также есть что-то для этого.