【发布时间】:2015-11-07 10:15:13
【问题描述】:
在 ZF2 中是否可以使用数组和数据库来组合(扩展)导航项?
我有根导航(深度级别 1 和 2),其配置为 php 文件 navigation.config.php。现在有一个基于产品类别的页面,该页面将为每个类别创建一个带有子页面的导航。
module
\-submodule
\-category 1
\-add
\-edit
\-form
\-list
\- ...
\-category n
每次添加类别时将所有内容都写为数组很烦人。相反,如果我通过从 db 中读取类别来使用代码加载它,而不是创建一个用于导航的递归 mvc 页面,那将会很好。
所有类别实际上都调用同一个控制器,但为了 UI,我必须像上面那样。
我通过使用控制器创建页面进行测试
public function listAction() {
$this->addPages(
array(
array(
'label' => 'R12313',
'route' => 'home',
'pages' => array(
array(
'label' => 'R12313cccc',
'route' => 'home',
)
)
),
array(
'label' => 'R123132',
'route' => 'home',
)
)
);
}
public function addPages($pages = array(), $min = 1, $max = 2) {
$navigation = $this->services->get('viewhelpermanager')->get('navigation');
$navigation = $navigation('navigation');
$active = $navigation->findActive($navigation->getContainer(), $min, $max);
if (isset($active['page'])) {
$active = $active['page'];
$pages = array('route' => 'home', 'pages' => $pages);
$newpage = \Zend\Navigation\Page\AbstractPage::factory($pages);
$newpage->setDefaultRouter($this->services->get('router'));
$active->addPages($newpage);
}
}
效果很好,但是我无法将菜单设置为在点击时激活它自己和父级。 也许在 Module bootstrap 中这样做会更好。
那么你知道怎么做吗?
【问题讨论】:
标签: php zend-framework2