Как добавить атрибут accesskey в ссылку, используя Zend Navigation - PullRequest
0 голосов
/ 20 сентября 2011

Я хочу добавить атрибут accesskey в 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'
            ));

В этой проблеме написано, что она исправлена. но все равно это не работает, даже у меня есть скачать последние ZF. Любая идея?

EDIT

В текущей версии 1.11.10 не принимайте атрибут accesskey в теге привязки. который должен. Поэтому я сделал свою собственную реализацию, расширив помощник меню. Я мог бы добавить свойство accesskey в Page.php, расширив его. но я предпочитаю сделать быстрое исправление и прочитать значение accesskey из массива страниц в помощнике меню. и я верю, что скоро Zendframework добавит поддержку accesskey в фреймворк.

1 Ответ

0 голосов
/ 21 сентября 2011

Вот решение, которое вам нужно для расширения помощника и создания собственной реализации.

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

атрибут zend_navigation и onclick

Как расширить помощник по просмотру в Zend Navigation Menu?

...