2013-08-20 1 views
0

가능한 한 가장 좋은 방법으로 응용 프로그램을 구조화하려고합니다."중첩 된"컨트롤러 구성하기

내 응용 프로그램에 "서비스"섹션이 추가됩니다. 이것은 인덱스 메소드와 /service/service1/ 또는 /service/service2/ 등을 통해 도달해야하는 여러 서비스로 구성됩니다.

나는 각 서비스에 대해 ServiceController과 메소드가 있다고 생각합니다. 각 서비스에는 /service/service1/getdata과 같은 몇 가지 ajax 메서드가 있습니다. 그러나이 구조를 사용하면 getdata은 자체 메서드가 아니라 변수 (즉, service1 함수를 제공 할 수 있지만 원하는 것은 아닙니다)입니다.

"서비스"플러그인이 있다고 생각했지만 URL에 /service/ 부분을 추가하면됩니다.

경로도 있지만 경로 (예 : route/services/service1/service1 /)를 수행하는 좋은 방법이 없습니다. 이 방법은 /service/에 대한 인덱스 방법이있는 추가 컨트롤러가 필요합니다. 그리고 컨트롤러 폴더는 모든 서비스에 지저분해질 수 있습니다. 따라서 할 수있는 일은 파일 이름에 '서비스'를 추가하는 것입니다.

어떻게 이런 식으로 구성합니까?

+0

은 당신이 정말로 등 ..., "서비스 2"를 "서비스 1"을 모두를 호출하고 있습니까? 실제 이름과 문맥을 제공하면 도움을 줄 수 있습니다. – Dave

+0

아니요, 그저 예제 일뿐입니다. 예를 들어 "report"또는 "api"이고 "서비스"카테고리와 별개로 다른 것을 공유하지 않습니다. – joakimdahlstrom

답변

0

정상적인 "ServicesController"(복수 참조)를 작성하십시오.

정말로 원하는 경우 routing을 사용하여 "서비스"를 단 하나의 작업으로 만들 수 있습니다. 컨트롤러에서

, 수 있도록 조치 :

report() { ... } 
api() { ... } 
report_get_data() { ... } 
api_whatever() { ... } 

또는 기능, 그냥 아약스 하나, 비에 대해 하나의 동일해야하는 경우, 다음, 하나 개의 행동을 가지고 whehter 여부 확인 요청이 아약스입니다 :

if($this->request->is('ajax') { ... 
+0

나는 그것에 대해 좋아했습니다. 한 가지 서비스에 속하는 메소드 논리적 인 장소에서 수집되지 않습니다.하지만 어쩌면 당신이 얻는 것이 최선일까요? – joakimdahlstrom

+0

우리는 몇 가지 행동을 취하고 있습니까? 서비스 당 10 ~ 20 가지가 넘는 서비스를 제공 할 예정입니까? 그렇지 않다면 재구성하십시오. 유형에 따라 다르지만, 많은 것을 상상하기 란 어렵습니다. 톤이 있다면, 다른 컨트롤러에서 이러한 것들을 생각하는 것이 좋습니다. "report", "report_data" ","api ","api_data "... 등등은 하나가 시작하고 다른 하나가 시작되는 곳을 분명하게 표시하기 위해 주석을 달 수도 있습니다 ... – Dave

+0

서비스 당 약 5-10 정도는 추측 할 수 있습니다. 그래서 그것은 너무 많을 것이 아니라, 단지 물건을 조직하는 좋은 방법을 찾고 있습니다. – joakimdahlstrom