Zend framework ZEND 2框架如何异步导航菜单
我想优化页面加载,通过Ajax异步加载导航菜单 现在它在layout.phtml中以标准方式工作,使用: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');
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 ));