ZF2 - 覆盖导航菜单视图辅助函数
ZF2 - overriding navigation menu view helper function
我正在尝试用我自己的函数扩展 Zend\View\Helper\Navigation\Menu
帮助程序 class 并覆盖 accept
函数。基于 ZF2 register custom helper for navigation 问题,我的菜单助手 class 看起来像这样:
<?php
namespace Application\View\Helper\Navigation;
use Zend\View\Helper\Navigation\Menu as ZendMenu;
use Zend\Navigation\Page\AbstractPage;
class Menu extends ZendMenu
{
public function accept(AbstractPage $page, $recursive = true)
{
$accept = true;
return $accept;
}
}
在 module.config.php
我添加了这个:
'navigation_helpers' => array (
'invokables' => array(
'menu' => 'Application\View\Helper\Navigation\Menu',
),
),
此代码在一般情况下工作正常,但是当部分布局用于呈现菜单时,我的 class 中的 accept
函数未被调用。问题可能出在后台调用 renderPartial()
vs renderMenu()
,但我不确定如何解决它。
感谢任何帮助。
查看 Samsonasik 的 this tutorial。我使用他的示例的一个 hack 来开发二维菜单。虽然本教程的内容是关于动态菜单的,但他如何呈现菜单可能会有所帮助。
Samsonasik 这样调用菜单:
<div class="nav-collapse">
<?php echo $this->navigation('Navigation')->menu()->setUlClass('nav'); ?>
</div>
在我的技巧中,我这样称呼我的菜单:
<?php
// ...
echo "<div class='collapse navbar-collapse'>";
echo "<ul class='nav navbar-nav'>";
echo $this->navigation('mainNavigation')
->menu()
->setPartial('partial/menu')
->render();
echo "</ul>";
echo "</div>";
我正在尝试用我自己的函数扩展 Zend\View\Helper\Navigation\Menu
帮助程序 class 并覆盖 accept
函数。基于 ZF2 register custom helper for navigation 问题,我的菜单助手 class 看起来像这样:
<?php
namespace Application\View\Helper\Navigation;
use Zend\View\Helper\Navigation\Menu as ZendMenu;
use Zend\Navigation\Page\AbstractPage;
class Menu extends ZendMenu
{
public function accept(AbstractPage $page, $recursive = true)
{
$accept = true;
return $accept;
}
}
在 module.config.php
我添加了这个:
'navigation_helpers' => array (
'invokables' => array(
'menu' => 'Application\View\Helper\Navigation\Menu',
),
),
此代码在一般情况下工作正常,但是当部分布局用于呈现菜单时,我的 class 中的 accept
函数未被调用。问题可能出在后台调用 renderPartial()
vs renderMenu()
,但我不确定如何解决它。
感谢任何帮助。
查看 Samsonasik 的 this tutorial。我使用他的示例的一个 hack 来开发二维菜单。虽然本教程的内容是关于动态菜单的,但他如何呈现菜单可能会有所帮助。
Samsonasik 这样调用菜单:
<div class="nav-collapse">
<?php echo $this->navigation('Navigation')->menu()->setUlClass('nav'); ?>
</div>
在我的技巧中,我这样称呼我的菜单:
<?php
// ...
echo "<div class='collapse navbar-collapse'>";
echo "<ul class='nav navbar-nav'>";
echo $this->navigation('mainNavigation')
->menu()
->setPartial('partial/menu')
->render();
echo "</ul>";
echo "</div>";