2010-11-25 5 views
0

이 질문은 탭이 지정된 인터페이스를 처리하는 최상의 방법과 관련하여 here에게 묻는 질문과 관련되어 있습니다. 그것은 Zend Framework Actionstack이 악의적 인 이유는 재사용되는 요소에 대해 부분을 사용하고 도우미를보아야한다고 설명했던 블로그 게시물을 참조했습니다. 요소가 입력을 처리 할 때까지는 괜찮습니다.이 경우보기 도우미가 대답이 아닙니다. 여기에서 액션 헬퍼를 사용합니다. 매튜 위어 오피니니 (Matthew Weier O'Phinney)는 자신의 블로그 글에서 액션 헬퍼를 사용하여 재사용 가능한 위젯을 구현하는 방법에 대한 유스 케이스에 대해 이야기합니다.다중 레벨 탭 인터페이스에 대한 컨트롤러, 동작 도우미 또는보기 도우미

이러한 관점을 읽은 후에 나는 인터페이스에 대한 최선의 행동 과정에 대해 더 혼란스러워 보입니다. 이 사이트는 3 가지 주요 탭, 사례, 직원, & 부서로 구성됩니다. 각 탭은 선택기/검색 표, (사례 | 부서 | 부서) 요약, 세로 탭 메뉴가있는 다른 영역으로 구성된 유사한 레이아웃을 따릅니다. 기본 탭에는 표시되는 정보를 제외하고 동일한 수직 탭 항목이 있습니다.

질문은이 인터페이스에서 뷰, 헬퍼 및 컨트롤러를 어떻게 구성해야합니까? 나는 인덱스, 케이스, 스탭 및 부서 컨트롤러를 가질 생각이었습니다. 각 주요 탭에 대한보기를 다시 사용하지만 요청 데이터를 사용하여 현재 선택된 (사례 | 부서 | 부서)를 결정하는 조치 도우미 작성. 개별 탭 컨트롤러를 사용하여 세로 탭 내용에 대한 jQuery 아약스 요청을 처리하고 출력을 뷰 뷰어에 위임하여 공통 뷰를 재사용합니다. 또한 개별 탭 컨트롤러를 사용하여 jQuery ajax crud 작업을 처리 할 수 ​​있습니다.

이렇게하는 것이 가장 좋은 방법입니까, 아니면 더 효과적인 방법이 있습니까?

답변

1

세 개의 기본 탭 각각에 대해 별도의 컨트롤러를 만들 수 있습니다. 사용자가 설명하는 수직 탭은 해당 컨트롤러의 작업에 해당합니다.

모든 탐색 탭 (최상위 및 세로) 렌더링의 경우 대답은 .... Zend_Navigation (more info) 인 것 같습니다.

INI 파일이나 XML 파일 또는 구조화 된 배열에서 읽은 모든 구조적 탐색 데이터를 단일 Zend_Navigation 컨테이너에 넣은 다음 "활성"분기를 렌더링 할 수 있습니다.

+0

당신을 위해 고맙습니다. 이것은 지금까지 내가 해왔 던 것이지만, 내가 염려하는 것은 내가 메인 탭에 대해 같은 디자인을 가지고 있지만 그것들에 대한 세 가지 다른 시각을 가지고 있다는 것이다. 또한 아약스에서 액세스하는 카테고리의 경우 동일한 디자인을 사용하지만 다른보기를 사용합니다. 뚱뚱한 모델과 스키니 컨트롤러를 유지하기 위해서 뷰의 렌더링과 관리를 위해 재사용 가능한 헬퍼 (뷰 | 액션)를 만들지 않아야합니까? – Rod

+0

모든 탭에 대해 하나의 액션을 사용하고 뷰에서 partial을 사용하여 각 탭 내용을 렌더링합니다 (따라서 페이지를 다시로드 할 필요가없는 탭을 변경할 때). David가 언급 한 것처럼 Zend_Navigation 탭을 표시하려면 컨트롤러를 마른 체형으로 유지하려면 3 가지 방법 (각 탭마다 하나 또는 코드의 일부가 다른 부분에 재사용되는 경우)에 따라 모델 내부에있는 대부분의 탭 데이터를 이동할 수 있습니다. app) tough 나는 이것이 성능에 어떤 영향을 미치는지는 모르겠지만 사용자 경험을 향상시킬 것입니다. –

+0

@ poelinca의 요점을 볼 수 있습니다 : 아마 단일 컨트롤러 w/3 액션. 각 작업은 수직 탭을 채우는 데 필요한 모든 작업을 수행 할 수 있습니다. 그런 다음 멋진 클라이언트 측 항목을 사용하면 페이지를 다시로드하지 않고도 모든 것을 볼 수 있습니다. 하지만 당신의 질문은 그 이상이라고 생각합니다. 이 3 개의 "페이지"는 검색 테이블, 요약, 탭과 같이 구조적으로 유사합니다. 따라서 req'd 데이터 (검색 테이블, 요약 등)를 "가져올"정도로 파라미터화할 수있는 액션 도우미를 만든 다음 유사하게 매개 변수화 된 뷰 도우미와 부분을 렌더링에 사용하는 것이 합리적입니다. 그것이 진정으로 비슷한 경우. –