2013-06-10 3 views
0

간단한 symfony2 애플리케이션을 작성 중이며 기본 컨트롤러의 생성자를 만들고 doctrine을 사용하여 쿼리를 실행하고 싶습니다. 그래서 나는 다음과 같이 썼습니다.컨트롤러 생성자의 엔티티 관리자 Symfony2

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

    DefaultController::$products = $product; 
} 

get()에 정의되지 않은 메서드가 호출되었다고하는 것이 문제입니다. 내가 뭘 놓치고 있니?

답변

0

의존성 주입 (DI) 문제 일 수 있습니다 => 컨트롤러의 생성자에 있으며 컨테이너에서 Doctrine 객체를 가져 오려고합니다. 그러나이 컨테이너는 DI 덕분에 객체 생성 후에 주입됩니다.

그래서 다음을 수행하려고하면 그것은 당신의 컨트롤러에 아직 존재하지 않기 때문에

$this->getDoctrine()... 

는, 당신이 당신의 용기에 방법이없는 것이 아주 정상입니다.

+0

내가 생각한 것이지만이 경우 어떻게하면 좋을까? 나는 서비스로 컨트롤러를 가지고 시도했지만 예상대로 작동하지 않았다. 이것을하기위한 표준 방법이 있습니까? – idipous

+2

나는 이벤트 리스너와 시도해야한다고 생각한다 : http://symfony.com/doc/current/cookbook/event_dispatcher/before_after_filters.html –