2011-04-19 5 views

답변

3

더 간단한 방법은 모든 탐색을 한 곳에서 정의하는 것입니다. 무제한 중첩 된 (하위) 페이지를 지원합니다. 즉 기본 메뉴로 기본 메뉴를, 하위 메뉴에 대한 각 기본 페이지 아래에 하위 페이지를 가질 수 있습니다. 보기 도우미를 사용하면 현재 활성 페이지에 대한 하위 페이지 메뉴 만 자동으로 출력 할 수 있습니다.

이 방법은 앞으로의 관리 용이성을 위해 모든 탐색을 한 곳에서 유지합니다.

예를 들어 Application Resource을 사용하여 application.ini 파일 내에서 사이트 전체 탐색을 정의한 다음 내보기 스크립트 내에서 Navigation View Helpers을 사용하여 내 메뉴의 서식을 지정합니다.

이 내가 일하고 프로젝트 내 application.ini 파일 탐색 설정에서 작은 추출물 :

resources.navigation.pages.exhibits.label     = "Exhibits" 
resources.navigation.pages.exhibits.controller    = "exhibits" 
resources.navigation.pages.exhibits.action     = "index" 
resources.navigation.pages.exhibits.pages.index.label  = "Search Exhibitors" 
resources.navigation.pages.exhibits.pages.index.controller = exhibits 
resources.navigation.pages.exhibits.pages.index.action  = index 
resources.navigation.pages.exhibits.pages.search.label  = "Search Exhibits" 
resources.navigation.pages.exhibits.pages.search.controller = exhibits 
resources.navigation.pages.exhibits.pages.search.action  = "search" 
resources.navigation.pages.exhibits.pages.new.label   = "New Exhibitor" 
resources.navigation.pages.exhibits.pages.new.controller = exhibits 
resources.navigation.pages.exhibits.pages.new.action  = "new" 
resources.navigation.pages.exhibits.pages.import.label  = "Import Exhibits" 
resources.navigation.pages.exhibits.pages.import.controller = exhibits 
resources.navigation.pages.exhibits.pages.import.action  = "import" 

resources.navigation.pages.sales.label      = "Sales" 
resources.navigation.pages.sales.controller     = "sales" 
resources.navigation.pages.sales.action      = index 
resources.navigation.pages.sales.pages.index.label   = "Review/Search" 
resources.navigation.pages.sales.pages.index.controller  = sales 
resources.navigation.pages.sales.pages.index.action   = index 
resources.navigation.pages.sales.pages.edit.label   = Add/Edit Sales 
resources.navigation.pages.sales.pages.edit.controller  = sales 
resources.navigation.pages.sales.pages.edit.action   = edit 
resources.navigation.pages.sales.pages.flags.label   = Flags/Problems 
resources.navigation.pages.sales.pages.flags.controller  = sales 
resources.navigation.pages.sales.pages.flags.action   = flags 

그리고 내 layout.phtml 파일 내 : 그래서 때

<div id='mainmenu'> 
    <?php echo $this->navigation()->menu()->setMaxDepth(0); ?> 
</div> <!-- #mainmenu --> 
<div id='submenu'> 
    <?php echo $this->navigation()->menu()->setOnlyActiveBranch(true) 
             ->setMinDepth(1) 
             ->setMaxDepth(1); ?> 
</div> <!-- #submenu --> 

사용자가 Exhibits 페이지로 이동하면 해당 페이지의 하위 항목 만 볼 수 있고 Sales 페이지에서도 마찬가지입니다. 아주 간단하고 매우 효과적입니다.

+0

끝내 주네! 고맙습니다! 컨트롤러와 작업을 지정하는 대신 경로 이름을 대신 사용할 수 있습니까? 그렇게하면 간단히 경로를 수정할 수 있으며 변경 사항이 탐색에 반영됩니다. –

+0

나는 Zend_Navigation에서 그것들을 사용한 적이 없지만 그렇습니다. * .route 매개 변수는 각 페이지에 사용할 라우터를 지정하는 데 사용될 수 있습니다. 사용법은 [Zend Navigation Pages MVC] (http://framework.zend.com/manual/en/zend.navigation.pages.html#zend.navigation.pages.mvc)를 참조하십시오. –

3

저는 보통 컨트롤러 플러그인에서 이렇게합니다. 여기서 현재 경로 또는 요청 매개 변수를 기반으로 탐색을 생성 한 다음 응용 프로그램 자원에서보기/레이아웃으로 쉽게 이동하고 탐색이 다시 설계되면 다른 것과 전환 할 수 있습니다.

+0

이렇게하려면 전용 컨트롤러 플러그인을 사용해야합니까? –

관련 문제