2011-04-19 12 views

cevap

3

Tüm navigasyonunuzu tek bir yerde tanımlamanın daha basit bir yolu vardır. Ana menünüze ana menüye ve alt menülerinizin her bir ana sayfasının alt sayfalarına sahip olabileceğiniz anlamına gelen, sınırsız iç içe (alt sayfa) sayfaları destekler. Görünüm Yardımcılarını kullanarak, geçerli etkin sayfa için otomatik olarak yalnızca alt sayfa menüsünü kolayca çıktı alabilirsiniz.

Bu şekilde, gelecekteki bakım için tüm navigasyonunuzu tek bir yerde saklayabilirsiniz.

Örneğin, site genelinde gezinmeyi Application Resource kullanarak application.ini dosyasında tanımladım ve sonra görünüm komut dosyamda menülerimi biçimlendirmek için Navigation View Helpers kullanın.

Bu üzerinde çalışıyorum bir projede benim application.ini dosya navigasyon yapılandırmasındaki küçük özüdür:

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 

Ve layout.phtml dosya içinde: Öyleyse zaman

<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 --> 

Kullanıcı Sergiler sayfasına gider, yalnızca bu sayfanın çocuklarını ve aynı Satış sayfasını görür. Oldukça basit ve çok etkili.

+0

Bu harika! Teşekkür ederim! Denetleyicileri ve eylemleri belirtmek yerine, yerine rota adları kullanabilir miyim? Böylece yolu basitçe değiştirebilir ve değişiklik navigasyona yansıtılacaktır. –

+0

Zend_Navigation'da bunları hiç kullanmadım, ama evet yapabilirsin. Kullanılacak yönlendiriciyi belirtmek için her sayfa için * .route parametresi kullanılabilir. Kullanım için [Zend Navigasyon Sayfaları MVC] 'ne (http://framework.zend.com/manual/en/zend.navigation.pages.html#zend.navigation.pages.mvc) bakınız. –

3

Genellikle bunu denetleyici eklentisinde yapıyorum. Burada mevcut rotaya ya da istek parametrelerine göre navigasyon oluşturabilir, daha sonra uygulama kaynağından kolayca görünüm/düzene geçebilir ve navigasyon yeniden tasarlandığında başka biriyle geçiş yapabilirim.

+0

Bunu yapmak için özel bir denetleyici eklentisi kullanmalıyım? –

İlgili konular