2012-05-23 4 views
2

컨트롤러 내부에서 컨트롤러를 호출 할 때 왜 다음과 같은 오류가 발생합니까?컨트롤러 내 컨트롤러 호출

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

내가 전화를 $this를 사용하는 경우 서비스, 교리, 또는 :

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

클래스는이 같은 것입니다 : 컨트롤러에서

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

나는 Controller를 확장하는 클래스라고 컨트롤러 내에서와 같은 다른 오류가 발생했습니다. 그렇지 않으면 작동합니다.

예를 들어이 클래스에서 doctrine을 어떻게 사용할 수 있습니까?

답변

4

문의하기 전에

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

을 시도 method()

편집 : 은 기본적으로는 서비스가 나쁜 생각 Controller 확장하지만 정말이 작업을 수행해야하는 경우,이

을 추가하려고
your.service: 
    class: Your\Class 
    arguments: [...] 
    calls: 
    - [ setContainer, [@service_container] ] 

(서비스 설정 파일에 아마도 service.yml)

+0

감사합니다. 그것은 작동합니다. 이 방법이 있습니까? 특히 수업 시간에 문제를 푸는 것. 왜냐하면, 많은 장소에서 (서비스로서) 클래스를 사용할 것이고 그것은 반복 일 것입니다. – seferov

+0

업데이트 된 답변보기 – prehfeldt

+0

당신은 위대합니다. 왜 그것이 나쁜 생각인지 아주 빨리 알려주실 수 있습니까? – seferov