2011-09-20 123 views
0

我想在zend导航中添加accesskey属性。如何使用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不接受锚标记accesskey属性。它应该。 所以我通过扩展菜单助手来完成自己的实现。我可以通过扩展它在Page.php中添加accesskey属性。但我更喜欢快速修复并从菜单帮助程序的页面数组中读取accesskey值。我相信很快zendframework将在框架中增加对accesskey的支持。

回答

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



} 

感谢下列人员线索

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?

相关问题