2014-02-07 3 views
-1

Doctrine 2를 사용하여 symfony 2 애플리케이션 아키텍처에 관한 세 가지 문제를 직면했습니다. 이것은 하나의 번들 애플리케이션입니다.Symfony 2 아키텍처 - 모범 사례

  1. 물론 일부 컨트롤러를 사용 하겠지만 다른 컨트롤러보다 먼저 "BeforeController"라는 특수 컨트롤러가 필요합니다. "BeforeController"에서 일부 초기화 메소드를 배치하려고합니다. "BeforeController"로 컨트롤러를 확장하는 것이 가장 좋은 방법입니까?

  2. ServiceContainer에서 일부 서비스를 만들고 싶습니다. 내가 가지고있는 모든 엔티티에 대해 자체 서비스 (예 : 제품 엔티티가 있으므로 제품을 조작하는 방법을 제공하는 제품 서비스를 작성합니다.)를 작성하는 것이 좋습니다. 아니면 Controller compentence에 있습니까?

  3. 누군가가 나를 설명 할 수 있습니까? 컨트롤러 또는 서비스 역량이 무엇입니까?

논리적이고 직관적 인 아키텍처를 만들고 싶습니다. 아마 모든 클래스 다이어그램이 도움이 될 것입니다.

누군가 내게 그것에 대한 몇 가지 모범 사례를 설명 할 수 있습니까? 문서에서

답변

3

:

  1. kernel.controller Event, 예 : Before filters with the kernel.controller Event,
  2. 서비스 : Service base info 더 : What is a Service?Controller base info 및 추가 Action. 실제로 필요한 경우 각 엔터티에 대해 별도의 서비스를 만드는 것이 아무 문제가 없습니다.
  3. 위와 동일합니다.

나는이 비디오를 SymfonyCon Warsaw 2013 How Kris Writes Symfony Apps에서 추천했습니다.

희망 도움말.

+0

감사합니다. 첫 번째 대답은 편안하고, 나는 이와 같은 것을 찾고있었습니다. 나는 두 번째 요점에서 당신의 게시물을 이미 읽었지만 아직도 이해하지 못한다. MVC에 참여한 컨트롤러는 모델 (이 경우 엔티티)을 사용해야합니다. 제 경우 엔 엔티티와 함께 ​​작동하는 서비스가 있습니다. 따라서 컨트롤러에서 find (by, all)와 같은 쿼리가 없습니다 ... 컨트롤러가 일부 엔티티를 찾는 경우 리포지토리를 사용하여 필요한 엔티티를 반환하는 일부 서비스를 호출합니다. 좋은 방법입니까? – gavec

+2

다릅니다. 결과를 얻기 위해서만 (엔터티 용) 서비스를 사용하고 싶다면'Repository'를 사용해야합니다. 그리고 컨트롤러에서'$ results = $ this-> getDoctrine() -> getRepository (YourBundle : EntityName ') -> getSth ($ param1, $ param2 ...)와 같이 sth를 호출하십시오. 물론'EntityNameRepository'에'getSth()'를 구현해야합니다. – NHG

+0

서비스는 엔터티 전용입니다. 또 다른 논리가 있어야합니다. 주로이 클래스 (서비스)는 다른 클래스와의 종속성을 갖습니다. 미안, 내가 그랬 으면 좋겠어. 그래서 나는 이것이 좋은 방법이라고 생각해. 그렇지? – gavec