2012-09-19 2 views
2

that 관련 질문입니다.
나는 엔티티를 처리하는 등의 서비스를 만들어야한다는 것을 이해했다. 컨트롤러에서 내 논리를 "이동"시켜 관리자 (즉, 서비스)에 배치해야하기 때문입니다.Symfony2 : 세션 객체 나 관리자를 사용하는 것이 더 낫습니까?

이제 일부 논리가있는 서비스가 있습니다. 그 서비스에서 나는 사용자에 따라 "관련 객체"목록을 리턴한다. - 그 객체는 스포츠 팀이라고 말한다.
내 목록의 첫 번째 요소 (어떻게 든 리포지토리에서 생성 됨)가 "기본"팀이고 페이지를 변경할 수 있다고 가정하면 모든 세션에 대해 을 변경할 수 있습니다.
로그 아웃하거나 세션이 오래되면 "기본"상태로 돌아가고 싶습니다.

내 생각은 다음과 같습니다. "이 엔티티의 관리자를 작성한 이후로이 클래스에서 개인 속성을 작성하고이 속성과 저장소 (일시적으로 setter 메소드로 저장)에서 변경 사항을 저장합니다. . "
이것은 내 DB에 영향을 미치지 않으며 모든 세션에 대해 내 정보를 오래 보관할 수 있습니다.

하지만 내 생각에 생각이 들었습니다. 세션 개체는 어떨까요? (내가 잘못 이해하지 못했다면 서비스입니다)
내 솔루션은 좋은 해결책입니까, 아니면 내 정보를 세션 객체에 저장하는 것이 더 좋습니까?
app.session을 사용하여 나뭇 가지에서 세션 변수를 직접 읽을 수 있다는 점을 제외하고는 동일합니다. 내가 잘못?

또한 잘못된 것이 아니라면 컨트롤러에서 매번 전달하지 않고 나뭇 가지에서 객체 속성에 어떻게 액세스 할 수 있습니까? (내 응용 프로그램 페이지에 모든 곳에서 표시하려는 전역 변수가있는 것과 같습니다.)

은 편집 :

자세한 내용은 this chat transcript에서 찾을 수 있습니다.

답변

1

세션 기간 동안 변수를 저장하려면 (예 : 로그 아웃 할 때까지 또는 사용자가 브라우저 창을 닫지 않는 한) 세션 객체에 변수를 저장해야합니다. 요청 기간 동안 변수를 저장하려면 관리자 서비스에 변수를 저장할 수 있습니다.

그러나 관리자 서비스를 사용하여 세션 변수를로드하여 컨트롤러에서 사용할 수있게 만들 수 있습니다.

컨트롤러를 데이터베이스/Doctrine에서 분리하는 것이 좋은 생각처럼 컨트롤러를 세션에서 분리하는 것도 좋은 생각입니다.

업데이트 : REST를 볼 때 코멘트에서 언급했듯이 서비스에서 세션 항목을 수행하는 것은 좋지 않습니다. 그러나 여전히 변수를 세션에 저장하고 컨트롤러를 사용하여 서비스의 값을 설정해야합니다.

+0

Yuo는 내 질문을 이해하지 못했습니다. 엔티티에 데이터를 일시적으로 저장하거나 DB에 저장하지 않으려합니다. ORM 및 엔티티 관리자와 함께 엔티티를 가지고 있으며 엔티티 관리자와 읽기/쓰기를 수행합니다. 나는 이것을 바꾸고 싶지 않다. 내 질문은 내가 "관리자"라고 부르는 것에 관한 것입니다. 클래스를 생성하고 서비스로 선언했습니다 (이전 질문에서 elnur가 나에게 암시 함). 이제 나는 컨트롤러와 저장소 사이에있는 서비스를 가지기 때문에 그것을 몇몇 변수를 저장하기 위해 사용하는 것이 좋으며, 또는 그것을 세션으로하는 것이 더 낫다. 이것은 질문입니다 – DonCallisto

+0

실제로 세션을 컨트롤러에서 분리하는 것은 좋은 아이디어가 아닙니다. 정확히 세션이 속한 작업이 속한 곳입니다.반대로 관리자는 세션에 대해 전혀 알지 않아야합니다. 세션은 일부 유형의 사용자, 예를 들어 웹 사용자는 REST API에 대해 이해가되지 않는 반면에 의미가 있지만, 둘 다 사용합니다. 동일한 관리자. –

+0

@elnur :이 목적으로 만 관리자를 사용하고 이러한 정보를 항상 지키면 응답이 변경되지 않습니까? 또한, 나는 서비스가 "국가"를 가지고 있다는 것을 압니다. 그렇지 않니? 왜냐하면 내가 내 서비스에서 setXXX를 컨트롤러로 호출하면 다른 컨트롤러에 getXXX를 호출 할 때 내 이전 값이 유지되지 않는 것 같습니다. – DonCallisto

관련 문제