2013-06-10 2 views
0

Я пишу простое приложение symfony2, и я хотел создать конструктор для моего контроллера по умолчанию и запустить его с помощью доктрины. Так что я написал что-то вроде:Менеджер сущности в конструкторе контроллера Symfony2

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

    DefaultController::$products = $product; 
} 

Проблема заключается в том, что он говорит, что есть вызов неопределенного метода на ГЭТ(). Что мне не хватает?

ответ

0

Это может быть вопрос зависимости (DI) => Вы находитесь в конструкторе контроллера и пытаетесь получить объект Doctrine из своего контейнера. Но этот контейнер впрыскивается ПОСЛЕ создания вашего объекта благодаря DI.

Так что, когда вы пытаетесь сделать следующее:

$this->getDoctrine()... 

это вполне нормально, что вы не имеете методы на контейнере, так как он еще не существует в контроллере.

+0

Это то, что я думал, но в этом случае, как я могу достичь того, чего хочу? Я попробовал контроллер в качестве сервиса, но он не работал должным образом. Есть ли стандартный способ сделать это? – idipous

+2

Я думаю, вам следует попробовать прослушиватель событий: http://symfony.com/doc/current/cookbook/event_dispatcher/before_after_filters.html –

Смежные вопросы