ServiceNotCreatedException Zend框架2在尝试多种导航(ServiceN

2019-10-18 10:45发布

我试图创建多个导航菜单基于特定的用户角色在我的应用程序中使用。 大部分代码是类似于ZFC管理员。 当我在我的应用程序中使用ZFC管理员,我能够把一个管理菜单,但是我将有大约四个角色,并决定把这个在我的应用模块。

module.config.php

'navigation' => array(
    'admin' => array(
        array(
            'label' => 'Admin Home',
            'route' => 'adminhome',
        ),
    ),
    'default' => array(
        array(
            'label' => 'Home',
            'route' => 'home',
        ),
    ),
),

AdminNavigationFactory.php

namespace Application\Navigation\Service;
use Zend\Navigation\Service\DefaultNavigationFactory;

class AdminNavigationFactory extends DefaultNavigationFactory
{
    protected function getName()
    {
        return 'admin';
    }
}

Module.php

public function getServiceConfig()
{
    return array(
        'factories' => array(
            'admin_navigation' => 'Application\Navigation\Service\AdminNavigationFactory',
        ),
    );
}

layout.phtml

<?php echo $this->navigation('admin_navigation')->menu(); ?>

我得到的错误。

Fatal error: Uncaught exception 'Zend\ServiceManager\Exception\ServiceNotCreatedException' with message 'While attempting to create adminnavigation(alias: admin_navigation) an invalid factory was registered for this instance type.' in /Applications/MAMP/htdocs/myapp/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php on line 987

如果我改变layout.phtml使用默认的菜单一切正常。

<?php echo $this->navigation('navigation')->menu(); ?>

Answer 1:

首先我得到了一模一样的问题。 从getServiceConfig()方法在模块类移动出厂配置到module.config.php后它的工作。

所以,我的管理,导航功能现在像如下:

module.config.php

(模块/管理/配置/ module.config.php)

return array(
    // yada yada yada...
    'service_manager' => array(
        'factories' => array(
            'navigation' => 'Zend\Navigation\Service\DefaultNavigationFactory',
            'adminnav' => 'Application\Navigation\Service\AdminNavigationFactory',
        ),
    ),
    'navigation'      => array(
        'default' => array(
            array(
                'label' => 'Home',
                'route' => 'home',
            ),
            array(
                'label' => 'Filme',
                'route' => 'movies',
            ),
            array(
                'label' => 'Admin',
                'route' => 'admin',
            ),
        ),
        'adminnav' => array(
            array(
                'label' => 'Film hinzufügen',
                'route' => 'add-movie',
            ),
            array(
                'label' => 'Buch hinzufügen',
                'route' => 'add-book',
            ),
        ),
    ),
);

AdminNavigationFactory

(模块/应用/ SRC /应用/导航/服务/ AdminNavigationFactory.php)

namespace Application\Navigation\Service;

use Zend\Navigation\Service\DefaultNavigationFactory;

class AdminNavigationFactory extends DefaultNavigationFactory
{
    protected function getName()
    {
        return 'adminnav';
    }
} 

也许你想看看在整个应用的上下文有关的代码,所以这里是链接到我的github上:

  1. AdminNavigationFactory
  2. module.config.php

问候,萨沙



文章来源: ServiceNotCreatedException in Zend Framework 2 while attempting multiple navigations