2012-12-06 3 views
1

CakePHP 2.2.3을 사용하고 있으며 내 사이트의 관리/대시 보드 영역을 만들어야합니다.코드 구성에 대한 조언이 필요합니다.

나는이 모델 및 대시 보드에 관련된 많은 모델과 컨트롤러가 나는

은 분명히 좀 index 액션과 대시 보드 컨트롤러를 구축 할 필요가 등의 모든 게시글/사용자/뉴스를 CRUD 할 수있는 능력을 가질 필요가있다 대시 보드 '집'페이지가 표시됩니다.

제 질문은 : 게시물/사용자/추가/수정하는 다른 모든 작업을 어디에 넣을 수 있습니까? 이 작업을이 새로운 대시 보드 컨트롤러에 넣어야합니까, 아니면 관련 컨트롤러 (게시물/사용자 ..)에이 작업을 추가하는 것이 좋습니까?

답변

4

각각의 컨트롤러에서 특정 작업을 수행하십시오. DashbaordsController는 다른 모델 정보를 많이 표시해야하는 페이지라면 상관 없지만 CRUD 작업은 자체 컨트롤러에 보관해야합니다.

한 페이지가 실제로 해당 페이지에서 CRUD 작업을 수행 할 수있게하려면/ajax를 사용하고 해당 컨트롤러의 작업을 계속 호출 할 수 있습니다.

결론 CRUD를 하나의 컨트롤러에 넣으려고하면 문제가 생겨서 앞으로 프로그래머에게 혼란스러워 질 것입니다.

다른 모델 $this->loadModel('MyModel');의 데이터를 포함하기가 쉽기 때문에 각각의 컨트롤러에서 CRUD 작업을 수행하는 것이 큰 장애가되지 않습니다. 다시 말하지만 DashboardsController는 대시 보드와 같은 일부 페이지에서만 여전히 유효하며 특정 모델에 대한 동맹 관계가 없습니다. 그러나 각 모델의 CRUD에는 적합하지 않습니다.

+0

감사합니다. 하지만 관리 영역과 관련된 모든 메서드에서 특정 레이아웃을 사용하려면이 메서드 각각에 ..-> layout (admin)을 두어야합니다. 그렇지 않으면 사용할 메서드 그룹을 바인딩하는 더 간단한 방법이 있습니다. 특정보기 레이아웃? BeforeFilter/BeforeRender를 사용할 수 있다는 것을 알았지 만, 현재 컨트롤러의 모든 메소드가이 관리 레이아웃을 사용하게 될 것입니다. 여러분의'beforeFilter'에 – Derp

+0

을 사용하면'if (isset ($ this-> request-> params [ 'admin'])) {$ this-> layout = 'admin'; }'- 필요한 경우 각 관리자 작업을 덮어 쓸 수 있습니다. (beforeRender를 사용한다면 메소드 별 레이아웃을 사용할 수 없다고 생각합니다!). – Ross

+0

@ user1604153 - 여기를 포함하여 여러 번 묻고 답했습니다 : http://stackoverflow.com/questions/4180655/change-admin-layout-in-cakephp -하지만 당신은 이해하지 못하거나 알아 내지 못합니다. 당신은 다른 질문을하고 코멘트로 추가하지 말아야합니다 .. – Dave

0

일반적으로 가장 이상적인 방법은 스키니 컨트롤러를 사용하고 로직을 모델에 가능한 한 많이 스택 아래에 유지하는 것입니다. 이상적으로 코드 재사용 및 테스트를 위해 라이브러리를 도입하고자 할 것입니다. 로버트 마틴 (Bob Martin)은 웹 전달과 데이터베이스가 가능한 한 많은 플러그인이어야한다고 말합니다. 이렇게하면 단위 테스트가 훨씬 향상됩니다. 최대한 멀리 귀하의 특정 사건을 내가 그렇게 가까이 컨트롤러를 별도의 컨트롤러를 별도로 수있는 몇 가지 낮은 수준의 물건을 위임 할 유지하고 싶습니다.

관련 문제