如何在Zend 2中创建动态类别下拉菜单

时间:2017-09-04 10:52:18

标签: php zend-framework zend-framework2

我是zend 2的新手,并尝试在顶部导航中生成自定义动态类别菜单。

对于类别我正在维护一个表,它将在菜单中加载类别。我在谷歌搜索但没有得到可能完全填满我的目的的解决方案。如果有人有解决方案,请帮助我。

作为参考,我已经上传了我需要显示类别和子类别的图像。

enter image description here

1 个答案:

答案 0 :(得分:1)

要从数据库创建ZF2导航,您需要创建导航工厂并通过覆盖getPages()方法添加页面,如下所示。

use Zend\Navigation\Service\DefaultNavigationFactory;

class MainNavigationFactory extends DefaultNavigationFactory
{

    public function getPages(ContainerInterface $serviceLocator)
    {
        $categories = // get navigation categories from database

        $configuration = $serviceLocator->get('config'); // get config

        foreach ($categories as $category) {
            $configuration['navigation'][$this->getName()][] = $category; // add category to navigation config
        }

        if (isset($configuration['navigation'][$this->getName()])) { // should always be true
            $pages = $this->getPagesFromConfig($configuration['navigation'][$this->getName()]);
            $this->pages = $this->preparePages($serviceLocator, $pages);
        }

        return $this->pages;
    }

}

然后你需要在module.config.php。

中注册上面的工厂
'service_manager' => array(
    'factories' => array(
        'navigation' => 'Application\Navigation\Service\MainNavigationFactory', // you may need to change this path according to your application
    ),
),

最后,在您的布局中,您需要使用

渲染导航
<?php echo $this->navigation('navigation')->menu(); ?>

您可能需要在navigation viewhelper中使用局部视图,以根据您的图片实现所需的菜单布局。

请注意,这只是一个基本的实施方案,但它应该让你朝着正确的方向前进。