это моя текущая ситуация:Zend: изменить структуру навигации в модуле
У меня есть xml для настройки моей общей навигационной структуры. В приложении/Bootstrap.php я добавил следующую функцию:
protected function _initViewHelpers()
{
$this->bootstrap('layout');
$oLayout = $this->getResource('layout');
$oView = $oLayout->getView();
$oNavContainerConfig = new Zend_Config_Xml(CONFIGPATH . 'navigation.xml', 'nav');
$oNavigationContainer = new Zend_Navigation($oNavContainerConfig);
$aCurrentRole = $this->_auth->getStorage()->read();
@$oView->navigation($oNavigationContainer)->setAcl($this->_acl)->setRole($aCurrentRole->role);
}
и это мой текущий плагин:
class Discount_Plugin_Module extends Zend_Controller_Plugin_Abstract
{
public function routeShutdown(Zend_Controller_Request_Abstract $oRequest)
{
// init all module view controller stuff
}
}
Я хочу изменить свою навигацию во время выполнения. Я хочу добавить элементы навигации, специфичные для модуля.
Я понятия не имею, как структура навигации может быть установлена из модуля.
Надеюсь, вы можете мне помочь.
Макс
Благодарю за это. В настоящее время я использую xml для моей навигационной структуры и объединяю его с моим ACL. Поэтому я могу гарантировать, что каждый пользователь получает навигацию, которой ему разрешено. Любая идея расширения вашего класса с помощью ACL и структуры xml? –
Просто предложение, но здесь я не буду проходить весь код ... Вы можете использовать Zend_Registry для хранения объекта Zend_Navigation(). Где-то в бутстрапе вашего приложения: Zend_Registry-> set ('navMenu', новый Zend_Navigation()); а затем в любом месте кода вы можете загрузить меню с помощью меню $ menu = Zend_Registry-> get ('navMenu'); и добавлять страницы или редактировать их так, как вам нравится, $ menu-> addPage ('page'); например. Они предназначены для загрузки определенных вами модулей в бутстрап вашего модуля. –