How to access a different controller from inside a controller Symfony2

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.


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