Я подал заявку с двумя модулями. Каждый модуль имеет свое меню. Я использую Zend_navigation для рендеринга меню. Меню отображается правильно, подменю тоже, но только одно меню отображается на каждой странице. Я пытаюсь найти исправления, найденные на этом форуме, но ничего не изменилось.
Вот моя структура:
application/
modules/
default/
configs/
navigationSite.xml
controllers/
models/
views/
bootstrap.php
cards/
configs/
navigationCards.xml
controllers/
models/
views/
bootstrap.php
Модуль Boostrap По умолчанию:
<?php
class Default_Bootstrap extends Zend_Application_Module_Bootstrap
{
protected function _initNavigation()
{
// read navigation XML and initialize container
$configSite = new Zend_Config_Xml(
APPLICATION_PATH.
'/modules/default/configs/navigationSite.xml',
'site');
$containerSite = new Zend_Navigation($configSite);
// register navigation container
$registrySite = Zend_Registry::getInstance();
$registrySite->set('Zend_NavigationSite', $containerSite);
// add action helper
Zend_Controller_Action_HelperBroker::addHelper(
new Bravo_Controller_Action_Helper_NavigationSite()
);
}
}
Boostrap модуль Карты:
<?php
class Cards_Bootstrap extends Zend_Application_Module_Bootstrap
{
protected function _initNavigation()
{
// read navigation XML and initialize container
$configCards = new Zend_Config_Xml(
APPLICATION_PATH.
'/modules/default/configs/navigationCards.xml',
'site');
$containerCards = new Zend_Navigation($configCards);
// register navigation container
$registryCards = Zend_Registry::getInstance();
$registryCards->set('Zend_NavigationApp', $containerCards);
// add action helper
Zend_Controller_Action_HelperBroker::addHelper(
new Bravo_Controller_Action_Helper_NavigationApp()
);
}
}
navigationCards.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configData>
<cards>
<menu1>
<label>Cards 1</label>
<uri>/cards/menu1</uri>
</menu1>
<menu2>
<label>Cards 2</label>
<uri>/cards/menu2</uri>
<menu2>
</cards>
</configData>
navigationSite.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configData>
<site>
<menu1>
<label>Site 1</label>
<uri>/default/menu1</uri>
</menu1>
<menu2>
<label>Site 2</label>
<uri>/default/menu2</uri>
<menu2>
</site>
</configData>
На мой взгляд По умолчанию:
<div id="menu">
<?php echo $this->navigation(Zend_Registry::get('Zend_NavigationSite'))->menu();?>
</div>
На мой взгляд Карты:
<div id="menu">
<?php echo $this->navigation(Zend_Registry::get('Zend_NavigationApp'))->menu()
->renderMenu(null, array(
'minDepth' => null,
'maxDepth' => 1,
'ulClass' => 'navigation',
'onlyActiveBranch' => false));
?>
</div>
Что-то мешает отображению двух разных меню на своих страницах, но я не могу понять. Может кто увидит очевидное: -)
РЕДАКТИРОВАТЬ: я исправил это! Я просто не знал, что такое "Zend_Registry". Теперь я звоню по правильному индексу и все в порядке! :-)
Я обновил код этого поста тоже.
Спасибо, ребята, за альтернативные решения!