Instantly share code, notes, and snippets.

Embed
What would you like to do?
Customizing Zend\View\Helper\Navigation\Menu
<?php
namespace Application\View\Helper\Navigation;
use Zend\View\Helper\Navigation\Menu;
class CustomMenu extends Menu
{
// override methods as needed
}
<?php
namespace Application\View\Helper\Navigation;
use Zend\ServiceManager\ConfigInterface;
use Zend\View\Helper\Navigation\PluginManager;
class CustomPluginManager extends PluginManager
{
public function __construct(ConfigInterface $configuration = null)
{
parent::__construct($configuration);
$this->invokableClasses[$this->canonicalizeName('menu')]
= 'Application\View\Helper\Navigation\CustomMenu';
}
}
<?php
echo $this
->navigation('Navigation')
->setPluginManager(new \Application\View\Helper\Navigation\CustomPluginManager())
->menu();
?>
@SmasherHell

This comment has been minimized.

Copy link

SmasherHell commented Oct 7, 2014

that solution work but I can't accept to construct new object in views for testing matters.

After some research, I found that Navigation Helper is not shared, or it is the twig module that mess up sharing, and if I try to add custom plugin to Navigation (such as a new menu) in module bootstrap, it is just ineffective. But I found an interesting thing in reading Navigation Helper construction in

Zend\Navigation\View\HelperConfig.php

the Navigation plugin manager can be configured in module, global or local config under the key navigation_helpers. That is an easy way to extends Navigation with plugins.

Ex :

module.config.php

'navigation_helpers' => array (
    'invokables' => array(
        'menu' => 'Application\View\Helper\Navigation\Menu',
    ),
),
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment