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

Php 如何在Zend 2中创建动态类别下拉菜单,php,zend-framework,zend-framework2,Php,Zend Framework,Zend Framework2,我是zend 2的新手,尝试在顶部导航中生成自定义动态类别菜单 对于类别,我维护一个表,从中可以加载菜单中的类别。我在谷歌搜索,但并没有得到解决方案,可能完全满足我的目的。如果有人有解决办法,请帮助我 作为参考,我上传了我需要显示类别和子类别的图像 要从数据库创建ZF2导航,您需要创建一个导航工厂,并通过覆盖getPages()方法添加页面,请参见下文 use Zend\Navigation\Service\DefaultNavigationFactory; class MainNavigat

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

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

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


要从数据库创建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(); ?>

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

请注意,这只是一个基本的实现,但它应该将您推向正确的方向