2014-04-07 2 views
0

나뭇 가지 안에로드 된 클래스에서 교리 연결을 만드는 방법은 무엇입니까? 내가 위젯을 만들려면 다음 https://github.com/Elendev/ElendevWidgetBundlesymfony2 elendev 위젯 번들의 엔티티 관리자에 액세스

를 사용하고, 내가 뭘해야하는 것은 심포니에서 만든 데이터베이스 글로벌 연결에 액세스 할 수 있습니다.

젠드에서는 예를 들어 Zend_Registry를 사용합니다.

나는이 같은 위젯을 쓰고 있어요 :

<?php 
namespace Test\Bundle\CommonBundle\Widget; 
use Elendev\WidgetBundle\Annotation\Widget; 

class Links { 
    /** 
    * @Widget(tag="links", priority=99) 
    */ 
    public function links(){ 
     $twig = new \Twig_Environment(new \Twig_Loader_Filesystem(array(__DIR__."/views/"))); 
     $links = new \Test\Bundle\CommonBundle\Entity\WidgetLinksData(); 
//how to i access entity manager from here? 
     return $twig->render('links.html.twig',); 
    } 
} 

답변

1

당신은 아마 다음과 같이 EntityManager를 서비스 정의를 삽입해야합니다

my_service: 
    class: Test\Bundle\CommonBundle\Widget\Links 
     # Add this 2 lines 
     arguments: 
      - @doctrine.orm.entity_manager 
     tags: 
      - {name: elendev.widget, method: memberDatas, tag: member_profile} 

그리고 EntityManager의 인스턴스에로드 할 것이다 클래스 생성자이므로 그냥 가져 가야합니다.

use Doctrine\ORM\EntityManager; 

class Links 
{ 
    private $em; 

    public function __construct(EntityManager $em) 
    { 
     $this->em = $em; 
    } 
} 

그리고이 같은 수업 방법에 당신이 필요로하는 무엇이든하는 데 사용할 수 있습니다 :

$this->em->find(...); 

그러나 나뭇 가지 확장 내부의 EntityManager를 주입하면 다른를 사용해야 수는 "가장 좋은 방법"아니다 그것을 감싸는 서비스.

symfony의 의존성 주입에 대한 자세한 내용은 http://symfony.com/doc/current/components/dependency_injection/introduction.html