ZEND 2 Framework, как Asyn c меню навигации - PullRequest
1 голос
/ 26 января 2020

Я хочу оптимизировать загрузку страницы, чтобы асинхронно загружать навигационное меню через Ajax.

Теперь это работает стандартным образом в layout.p html, используя:

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()));

Ответы [ 2 ]

1 голос
/ 28 января 2020

Вот что сработало, дополнительные ->get('navigation'):

$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 ));
0 голосов
/ 27 января 2020

Попробуйте код ниже:

//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'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...