How to access a different controller from inside a controller Symfony2

前端 未结 2 2031
隐瞒了意图╮
隐瞒了意图╮ 2020-12-01 02:39

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

相关标签:
2条回答
  • 2020-12-01 03:34

    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

    0 讨论(0)
  • 2020-12-01 03:37

    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.

    0 讨论(0)
提交回复
热议问题