0

我想在 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'
            ));

在这个问题上它说,它已被修复。但它仍然无法正常工作,即使我已经下载了最新的 zf。任何的想法?

编辑

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

4

1 回答 1

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

/// 在引导文件中添加辅助路径

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



}

感谢关注的人提供线索

让 Zend_Navigation 菜单与 jQuery 的 Fisheye 一起工作

zend_navigation 和 onclick 属性

如何扩展 Zend Navigation Menu View Helper?

于 2011-09-21T12:35:40.030 回答