2011-10-29 5 views
2

안녕하세요 저는 propel 모델 클래스에 개체를 저장하는 동안 로그인 한 사용자를 얻으려고합니다.Symfony2 컨트롤러 외부의 세션 데이터

$this->get('security.context')->getToken()- >getUser() 

과 나뭇 가지

app.user 

내부하지만 어떻게 내가 모델/기업 내부에서 동일한 정보를 얻을 수 있습니까 :

난 당신에 의해 사용자를 얻을 수 symfony2에있는 모든 문서에서 참조

편집 :

좋아, 내가 이것을하려고하는 방법을 실제로 볼 수 없기 때문에 내가하려고하는 것보다 조금 더. 필자는 의존성 주입 주사를 보았지만 내가하고 싶은 일에 실제로 옳은 것인지 확신 할 수 없었습니다.

나는 내가 UserToEvent 객체를 생성하고 새로운 event.id과 user.id와 함께 데이터베이스에 저를 저장할) 이벤트라는 엔티티 클래스와 이벤트 -> postSave (다른라는 UserToEvent이

이 서비스는 "일종의" "일종의" "일종의"작업이며 사용자가 이벤트 객체에 삽입해야 할 때마다 새로운 객체도 저장하려고 할 때 정의 된 here으로 "서비스"가 필요하다고 생각하지 않습니다. 약간의 낭비가 보인다. 보통 나는 Application :: getUser() 라인을 따라 뭔가를 할 수 있기를 기대한다. 그러나 이것이 가능한 것처럼 보이지는 않습니다.

+0

유스 케이스에 대해 더 알려 줄 수 있습니까? 필요한 작업을 수행하기 위해 서비스 클래스를 작성하면 안됩니까? DIC는 보안 컨텍스트를 서비스에 바로 주입 할 수 있습니다. – Kasheen

+0

유스 케이스로 질문을 업데이트했습니다. 감사 –

답변

3

의존성 주입을 사용하십시오.

보안 컨텍스트 또는 사용자를 필요한 클래스에 주입하십시오. Symfony2 앱을 사용하면서 당신이 따라야하는 접근 방식입니다.

수동으로 또는 DIC를 사용하여 서비스를 삽입 할 수 있습니다. 당신이 엔티티 클래스 내부에 그것을 사용하기 원하기 때문에 당신은 아마 생성자에서 종속성

을 통과해야합니다 :

class Page 
{ 
    private $user = null; 

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

또는 세터 :

class Page 
{ 
    private $user = null; 

    public function setUser($user) 
    { 
     $this->user = $user; 
    } 
} 

또는 메서드 매개 변수로

:

class Page 
{ 
    public function doSomething($user) 
    { 
     // do something with $user 
    } 
} 

의존성 주입에 관한 일련의 기사 : http://fabien.potencier.org/article/11/what-is-dependency-injection

관련 문제