2011-01-13 4 views
1

내 아키텍처에 대한 의견을 보내고 싶습니다. My Zend Framework 프로젝트에는 여러 모듈이 포함되어 있으며 모듈로 페이지를 작성합니다. 여러 모듈이 하나의 페이지를 만들 수 있기 때문에 기본 ZF 앱과 약간 다릅니다. 예를 들어 연락처 페이지는 부분 텍스트 (텍스트 모듈)와 문의 양식 (연락처 모듈)으로 구성됩니다. 또는 3 열 페이지에는 3 개의 텍스트 모듈이 한 페이지에서 실행됩니다. 지금까지 그렇게 좋았습니다 (이 모든 것이 훌륭합니다). 이제ZF 관리자의 아키텍처 조언

관리 인터페이스

우리의 관리자. 관리 인터페이스에서 우리는 하나의 페이지를 편집하고 하나의 모듈은 편집하지 않습니다. 단일 페이지는 하나 이상의 Zend_Form 인스턴스를 가질 수 있습니다. 예를 들어 텍스트는 텍스트 영역으로 편집 할 수 있고, 문의 양식은 일부 입력 필드에서 편집 할 수 있습니다. 그것들은 더 큰 Zend_Form 인스턴스의 하위 폼으로 뷰에 표시되어야합니다. 또한 html을 (예 : 스크립트보기) 표시해야합니다 (예 : 포트폴리오의 블로그 기사 또는 프로젝트 목록). 모든 모듈이 "관리 가능"은 아닙니다 (예 : 사이트 맵, 구성 할 것이 없습니다).하지만 생성, 업데이트 및 삭제를 지원해야합니다.

현재 아키텍처

우리는 서비스를 이제 작동합니다. 확인하기 쉽습니다 (Portfolio_Service_Admin 클래스가 있고 Admin_Service_AdminInterface를 구현합니까?). 그러나 포트폴리오는 이미 구현이 어려워집니다. 서비스는 일종의 컨트롤러 역할을하며 포트폴리오 생성, 업데이트 및 삭제를 지원할뿐 아니라 포트폴리오 카테고리의 CRUD 및 포트폴리오 프로젝트의 CRUD (한 클래스에서!)를 지원합니다. 이 명확하지 않으면

, 나는 우리의 현재 접근 한 후

에 대한 자세한 정보를 추가 할 수 있습니까?

서비스가 일종의 컨트롤러로 작동하기 때문에 컨트롤러 (duh)를 생각하고있었습니다. 유일한 단점은 컨트롤러가 return 양식을 사용하여이 모듈 양식을 더 큰 양식의 하위 양식으로 추가하는 것입니다 (응답에 추가되지 않음). 또한 한 페이지에 여러 모듈이 있으면 디스패치 루프가 반복적으로 많이 실행되므로 그리 효율적이지 않습니다.

So : 이것을 제어하는 ​​방법에 대한 제안이 있습니까?

+0

관리 영역에서 페이지를 편집 할 때 많은 하위 폼이있는 Zend_Form이 제출됩니까? 하위 폼을 통과하고 각 부분을 적절한 모듈에 위임하기에 충분한 지능형 페이지 컨트롤러가 있습니까? –

+0

예, 모든 것이 이미 내 서비스 접근법에 잘 작동합니다 (그리고 마지막으로 새로운 방법을 사용할 수 있다면 변경되지 않을 것입니다). Admin_Service_Form은 Application_Model_Page를 받아들이므로 서비스는 페이지에있는 모듈을 알고 있습니다. 결과적으로 모든 모델은 양식을 반환하도록 요구받습니다. 그리고 POST 후에 서비스는 모듈을 다시 호출하여 변경 사항을 적용합니다. 심지어 18n 구현됩니다 :) –

답변

0

이번에 다시보고 싶습니다. ZF2의 새로운 CMF (콘텐츠 관리 프레임 워크) 앱을 시작하여 문제를 해결했습니다 (단, 다른 솔루션이 있음에도 불구하고).

페이지와 모듈이 이제 1 : 1로 연결되었습니다. 따라서 관리자는 적절한 모듈에 요청을 단순히 프록시 처리 할 수 ​​있기 때문에 훨씬 쉽게 관리 할 수 ​​있습니다. 이것은 공개 소스로 공개 될 예정이므로 가까운 장래에 github에 대한 링크로이 답변에 대해 의견을 말하게 될 것입니다.

1

나는 당신이 MVC 모듈을 혼란스럽고 "페이지 모듈"이라고 부르는 것을 믿는다. 하나의 모듈과 몇 개의 모델이 필요한 것 같습니다.

Pages_Model_Page에는 많은 Pages_Model_Module이 있습니다. 각각의 Pages_Model_Module은 모듈의 양식을 얻기 위해 하나의 양식 (Pages_Form_Module_ *) 및 getForm() 메소드를 가지고 있습니다. getForm()에서 "Module"폼의 새 인스턴스를 만들고 "Module"에 대한 데이터를 채울 수 있습니다.

"페이지"당 "모듈"을 가져 와서 각 양식을 표준 양식의 Zend_Form에 하위 양식으로 넣은 다음보기로 전달하십시오. 제출이 완료되면 위의 과정을 반복하여 양식을 작성한 다음 유효성을 검사하십시오. 유효하면 각 모듈을 반복하고 변경 사항을 적용하십시오.

"페이지 모듈"(텍스트, 이미지, 양식, rss, 비디오)마다 하나의 모델과 양식이 있으며 새로운 모델이 필요한 경우 모델과 양식을 만들면됩니다.