Zend framework ZEND 2框架如何异步导航菜单

Zend framework ZEND 2框架如何异步导航菜单,zend-framework,Zend Framework,我想优化页面加载,通过Ajax异步加载导航菜单 现在它在layout.phtml中以标准方式工作,使用: echo $this->navigation('CatalogNavigation')->menu()->setPartial('catalog_menu'); 该行在控制器中不起作用: $view = $this->navigation('CatalogNavigation')->menu()->setPartial('catalog_menu');

我想优化页面加载,通过Ajax异步加载导航菜单

现在它在layout.phtml中以标准方式工作,使用:

echo $this->navigation('CatalogNavigation')->menu()->setPartial('catalog_menu');
该行在控制器中不起作用:

$view = $this->navigation('CatalogNavigation')->menu()->setPartial('catalog_menu'); //this line is not working 
return new JsonModel(array('view' => $view()));
请尝试以下代码:

//factory

class NavigationFactory extends DefaultNavigationFactory
{
    protected function getName()
    {
        return 'navigation-example';
    }
}

//module.config.php

'service_manager' => array(
        'abstract_factories' => array(
            'Zend\Cache\Service\StorageCacheAbstractServiceFactory',
            'Zend\Log\LoggerAbstractServiceFactory',
        ),
        'factories' => array(
            'translator' => 'Zend\Mvc\Service\TranslatorServiceFactory',
            'navigation-example' => 'Application\Factory\NavigationFactory'
        ),
    ),

// global.php:

return array(
    'navigation' => [
        'navigation-example' => [
            [
                'label' => 'Google',
                'uri' => 'https://www.google.com',
                'target' => '_blank'
            ],
            [
                'label' => 'Home',
                'route' => 'home'
            ]
        ]
    ]
);

// in controller

$viewHelperManager = $this->getServiceLocator()->get('viewHelperManager');
$navigation = $viewHelperManager->get('navigation');
$catalog_navigation = $navigation('navigation-example');
$menu = (string) $catalog_navigation->menu();
return new JsonModel(compact('menu'));

下面是工作原理,附加的
->get('navigation')


$viewHelperManager->get('CatalogNavigation')部分不工作。CatalogNavigation在module.config.php中定义为工厂:“服务管理器”=>array('factories'=>array('CatalogNavigation'=>'Catalog\Service\NavigationFactory',..CatalogNavigation工厂是在另一个modules module.config中定义的,这可能就是$viewHelperManager->get('CatalogNavigation')无法工作的原因?
$navigation = $this->getServiceLocator()->get('viewHelperManager')->get('navigation');
$catalog_navigation = $navigation('CatalogNavigation');
$view = $catalog_navigation->menu()->setPartial('catalog_menu');

return new JsonModel(array( 'view' => (string)$view ));