I want to add accesskey attribute in zend navigation.
$navArray = array(
array(
'title' => 'front',
'uri' => '/home',
'label' => 'Home',
'class' => 'a',
'accesskey' => 'h'
),
array(
'title' => 'about us',
'uri' => '/abousus',
'label' => 'About US',
'class' => 'b',
'accesskey'=>'a'
));
In this issue it says, it has been fixed. but still it is not working, even I have download latest zf. Any Idea?
EDIT
Zend current release 1.11.10 do not accept the accesskey attribute in anchor tag. which it should. So I did my own implementation by extending the menu helper. I could have add accesskey property in Page.php by extending it. but i prefer to do quick fix and read the accesskey value from page array in menu helper. and I believe soon zendframework will add the support for accesskey in framework.
Here is the solution you need to extend helper and create your own implementation.
class mylib_View_Helper_Navigation_MyMenu extends Zend_View_Helper_Navigation_Menu
{
public function myMenu(Zend_Navigation_Container $container = null)
{
return parent::menu($container);
}
public function htmlify(Zend_Navigation_Page $page)
{
// get label and title for translating
$label = $page->getLabel();
$title = $page->getTitle();
// translate label and title?
if ($this->getUseTranslator() && $t = $this->getTranslator()) {
if (is_string($label) && !empty($label)) {
$label = $t->translate($label);
}
if (is_string($title) && !empty($title)) {
$title = $t->translate($title);
}
}
// get attribs for element
$attribs = array(
'id' => $page->getId(),
'title' => $title,
'class' => $page->getClass()
);
// does page have a href?
if ($href = $page->getHref()) {
$element = 'a';
$attribs['href'] = $href;
$attribs['target'] = $page->getTarget();
$pageArray = $page->toArray();
if(array_key_exists('accesskey', $pageArray))
$attribs['accesskey'] = $pageArray["accesskey"];
} else {
$element = 'span';
}
return '<' . $element . $this->_htmlAttribs($attribs) . '>'
. $this->view->escape($label)
. '</' . $element . '>';
}
}
/// call it like this
echo $this->navigation()->myMenu()
->setUlClass('footer_navigation')
->render($footerNavContainer);
/// add helper path in bootstrap file
protected function _initNavigation()
{
$this->bootstrap('view');
$view = $this->getResource('view');
$view->addHelperPath(
GLOBAL_LIBRARY_PATH . '/mylib/View/Helper/Navigation',
'mylib_View_Helper_Navigation'
);
}
Thanks to following people for clues
Getting Zend_Navigation menu to work with jQuery's Fisheye