Symfony – Calling controller inside a controller

symfony

Why it gives the following error when calling controller inside a controller?

Fatal error: Call to a member function get() on a non-object in
/home/web/project/symfony2/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php
on line 149

In the controller I called a class that extends Controller:

class DemoController extends Controller
{
    public function indexAction()
    {
        $object = new \Acme\DemoBundle\Service\Object();
        $object->method();
    }
    // ...
}

The class is something like this:

# Acme/DemoBundle/Service/Object.php
class Object extends Controller
{
    public function method()
    {
        $em = $this->getDoctrine()->getEntityManager(); // the problem
        // ...
    }
}

When I use $this to call service, doctrine, or something else like within a controller, the error occurred. Otherwise, it works.

How can I use, for example, doctrine inside this class?

Best Answer

Try

$object->setContainer($this->container);

before you call method()

Edit: Basically it's a bad idea to have a service extend Controller but if you really need to do this, try to add this

your.service:
  class: Your\Class
  arguments: [...]
  calls:
    - [ setContainer, [@service_container] ]

in your service configuration file (probably service.yml)

Related Topic