2

コントローラー内でコントローラーを呼び出すと、次のエラーが発生するのはなぜですか?

致命的なエラー: 149 行目の /home/web/project/ symfony2 /vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.phpの非オブジェクトに対するメンバー関数 get() の呼び出し

コントローラーで、拡張するクラスを呼び出しましたController

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

クラスは次のようなものです。

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

$thisサービス、教義、またはコントローラー内のようなものを呼び出すために使用すると、エラーが発生しました。それ以外の場合は、機能します。

たとえば、このクラス内でドクトリンを使用するにはどうすればよいですか?

4

1 に答える 1

4

試す

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

電話する前にmethod()

編集:基本的にサービスを拡張するのは悪い考えですが、本当にControllerこれを行う必要がある場合は、これを追加してみてください

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

サービス構成ファイル (おそらくservice.yml)

于 2012-05-23T09:45:01.483 に答える