Eski eski bootstrap ile View Zend_Navigation ekle

1 Cevap php

Ben Zend_Navigation tüm hafta sonu mücadele ettik ve şimdi benim konularda bir sürü neden olmuştur inanmak başka bir sorun var.

Ben bir miras 1.7.6 Zend Framework uygulama Zend_Navigation eklemek için çalışıyorum, ben 1.9.0 için Zend Kütüphane güncellenir ve bu kütüphane güncelleştirme yapmak üzere ön yükleme güncelledik.

Sorun nasıl bilmiyorum olduğunu ve örnekler görünümüne Navigasyon nesne eklemek için nasıl yeni bir önyükleme yöntemi göstermek, ben denedim:

//initialise the application layouts with the MVC helpers
$layout = Zend_Layout::startMvc(array('layoutPath' => '../application/layouts'));

$view = $layout->getView();
$configNav = new Zend_Config_Xml('../application/config/navigation.xml', 'navigation');
$navigation = new Zend_Navigation($configNav);
$view->navigation($navigation);
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
$viewRenderer->setView($view); 

Bu para ile çalıştırmak gibi görünüyor, ama benim düzeninde kırıntı görünüm yardımcıyı kullanın giderken, onunla hataları: Strict Standards: Creating default object from empty value in C:\www\moobia\development\website\application\modules\employers\controllers\IndexController.php on line 27

Bu init aşağıdaki kod benim denetleyicisi () işlevini neden olur.

$uri = $this->_request->getPathInfo();
$activeNav = $this->view->navigation()->findByUri($uri); <- this is null when called
$activeNav->active = true;

Ben Zend_Navigation nesne görünümünde değil, çünkü inanıyorum.

Ben mevcut yöntemine ön yükleme göç bakmak istiyorum, ama şu anda ben bir serbest bırakılması için zaman bitiyor.

Teşekkürler,

Hibe

1 Cevap

Önce Zend_Navigation görünümünde değildir diye şüphe doğru olup olmadığını çalışmak gerekir. Bunu yapmanın en kolay yolu eklemek olacaktır:

var_dump($this->view->navigation());exit;

denetleyicisi init (). Var ise bu Zend_Navigation nesneyi döndürmek gerekir.

Orada değilse, Zend_Navigation nesneyi temin alternatif bir yol daha kolay olabilir defterini kullanmaktır. Bunu yapmak için size bootstrap görünümü şeyler kaldırmak ve sadece bunu yapmak istiyorum:

$configNav = new Zend_Config_Xml('../application/config/navigation.xml', 'navigation');
$navigation = new Zend_Navigation($configNav);
Zend_Registry::set('Zend_Navigation', $navigation);

zaten bir Zend Navigasyon nesnesi yoksa görünüm nesnesi kayıt defterinde bakacağız gibi kontrolör init () şeyler aynı kalacaktır.

Ancak, ben senin kontrolör init () kodu oldukça istediğiniz şekilde çalışacağından emin değilim. I findByUri () Mvc sayfalarda çalışacağını sanmıyorum (ama yanlış olabilir), ve önceki soruya o Mvc olanlardır XML dosyasında sayfaların çoğu gibi görünüyordu. Mvc sınıf eşdeğer görünen bir 'href' özelliğine sahiptir. XML dosyası iki sayfa türlerini içeriyorsa, hem kontrol etmek gerekebilir, bu yüzden böyle bir şey öneririm:

$uri = $this->_request->getPathInfo();
if (($activeNav = $this->view->navigation()->findByHref($uri)) !== null) {
    $activeNav->active = true;
} else if (($activeNav = $this->view->navigation()->findByUri($uri)) !== null) {
    $activeNav->active = true;
}