Controller Constructor Symfony2中的实体管理器

时间:2013-06-10 07:18:12

标签: php symfony

我正在编写一个简单的symfony2应用程序,我想为我的默认控制器创建一个构造函数,让它运行一个带有doctrine的查询。所以我写了类似的东西:

public function __construct()
{
  $product = $this->getDoctrine()
    ->getRepository('AcmeStoreBundle:Product')
    ->find($id);

  DefaultController::$products = $product;
}

问题在于它表示在get()上调用了一个未定义的方法。我错过了什么?

1 个答案:

答案 0 :(得分:0)

可能是依赖注入(DI)=>的问题。您位于控制器的构造函数中,并尝试从容器中获取Doctrine对象。但是这个容器是在你的物体结构之后注入的,这要归功于DI。

因此,当您尝试执行以下操作时:

$this->getDoctrine()...

你的容器上没有方法是很正常的,因为它在你的控制器中还不存在。