나는 자신의 저장소, 관리자, 제공자 등으로 여러 사용자 유형을 정의 할 수있는 사용자 정의 사용자 번들을 만들고 있습니다. 따라서 한정된 컨트롤러 세트를 생성하는 대신 컨트롤러 팩토리는 정의 된 사용자 유형 및 구성을 기반으로 컨트롤러를 생성합니다. 그러나 이것은 중요한 질문을 제기합니다 - 공장은 어디에서 어떻게 운영되어야합니까?symfony : 컨트롤러 팩토리
이제 공장에서 컨트롤러를 만드는 것만으로는 충분하지 않으며, 어딘가에 모든 경로를 설정해야한다는 것을 기억하십시오.
질문은 -이 아키텍처에 가장 적합한 것은 무엇입니까? 확장의 load
방법
로드 공장의 정의를하고, 거기에 모든 컨트롤러를 만드는 :
그것이 내가 내 코드를 삽입하는 레이어를 선택에 관해서
, 나는 다른 사람의 사이에서, 고려했다. 문제 : 라우터가 컨테이너를 만들기 전에 발생하기 때문에 라우터를 사용할 수 없으므로 같은 위치에 경로를 만들 수 없습니다.Sooo ... 아마도 컴파일러가 통과 했습니까? 하지만 컴파일러 패스는 구성에 액세스 할 수 없습니다 ... 내 말은 ... 실제로 구성을로드하고 수동으로 처리하는 경우 사실이지만 여전히 좋은 장소인지는 확실하지 않지만 지금이 솔루션을 향해 기울고 있습니다. 생성 경로에
온다 :
내가 컨트롤러 공장에서 경로 생성 로직을 배치해야 하는가? 하지만 컨트롤러를 서비스로 만들고 공장에서 만든 컨트롤러의 serviceId에 액세스 할 수 없으며 route를 만드는 데 serviceId가 필요합니다.
컨트롤러 자체에 있습니까? 즉, 주석 경로가 작동하는 방식이므로 실행 가능할 수 있습니다. 컨트롤러는 내 자신의
ControllerInterface
과 같은 메소드를getRoutes
으로 구현해야하고, 외부 서비스/컴파일러 패스는 먼저 컨트롤러로 서비스를 생성 한 다음 해당 컨트롤러에서 경로를 가져와 수정해야합니다. 컨트롤러의 serviceId를 추가하고 라우터에 추가하십시오.다른 옵션이 있습니까?
컨트롤러의 공장 패턴과 관련된 정보가 상당히 부족합니다. :).
당신이 요청별로 할 필요가이 뭔가? 아니면 명령을 통해 한 번 수행 할 수있는 무언가입니까? – Cerad
무엇을 참고 하시겠습니까? 컨트롤러를 만드는 이벤트에 대해 질문하는 경우 컨테이너와 경로를 만들 때 한 번만 수행해야합니다. 컨트롤러 (서비스로서)와 루트는 Symfony에 의해 평소처럼 캐싱되어야합니다. –
죄송합니다. "컨트롤러 ** 정의 **를 만드는 이벤트에 대해 질문하는 경우"를 의미합니다. –