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プロパティを拡張して追加することもできます。しかし、私はクイックフィックスを実行し、メニューヘルパーのページ配列からアクセスキー値を読み取ることを好みます。そして、すぐにzendframeworkがフレームワークにアクセスキーのサポートを追加すると思います。

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 ナビゲーション メニュー ビュー ヘルパーを拡張するにはどうすればよいですか?

于 2011-09-21T12:35:40.030 に答える