如何使用zend导航在链接中添加accesskey属性

时间:2011-09-20 14:25:49

标签: zend-framework zend-navigation

我想在zend导航中添加accesskey属性。

$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'
            ));

它说issue,它已被修复。但它仍然无法正常工作,即使我已下载最新的zf。 有什么想法吗?

修改

Zend当前版本1.11.10不接受anchor标记中的accesskey属性。它应该。 所以我通过扩展菜单助手来完成自己的实现。我可以通过扩展它来在Page.php中添加accesskey属性。但我更喜欢快速修复并从菜单助手中的页面数组中读取accesskey值。我相信很快zendframework将在框架中添加对accesskey的支持。

1 个答案:

答案 0 :(得分:0)

以下是扩展帮助程序并创建自己的实现所需的解决方案。

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 . '>';
    }


}

///这样称呼它

echo $this->navigation()->myMenu()
                             ->setUlClass('footer_navigation')
                             ->render($footerNavContainer);

///在bootstrap文件中添加辅助路径

    protected function _initNavigation()
{
    $this->bootstrap('view');                   
    $view = $this->getResource('view');        
     $view->addHelperPath(
      GLOBAL_LIBRARY_PATH . '/mylib/View/Helper/Navigation',
      'mylib_View_Helper_Navigation'
    );



}

感谢关注人们的线索

Getting Zend_Navigation menu to work with jQuery's Fisheye

zend_navigation and onclick attribute

How do I extend the Zend Navigation Menu View Helper?