ヘルパーを拡張して独自の実装を作成するために必要なソリューションを次に示します。
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 ナビゲーション メニュー ビュー ヘルパーを拡張するにはどうすればよいですか?