I need to access a method from a different controller inside another controller. How can I do it? Can I use this->get
method?
Can I include the contr
You can define your controller as service, then get it in another controller.
In your services.yml
define needed controller as a service:
services:
your_service_name:
class: YourCompany\YourBundle\Controller\YourController
Then in any controller you'll be able to get this service via container:
$yourController = $this->get('your_service_name');
There is some useful information about Controllers as Services in documentation
If you don't want to define the class as a service, as it doesn't feel as a good practice to me and @Qoop quoted Fabien saying the same, you can use forwarding:
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;
}
If you need to embed the output of an internal controller-action in a template, the documentation for Symfony also has something for that.