Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 尝试创建新路由时出现Zend\ServiceManager\Exception\ServiceNotCreateDexException_Php_Zend Framework_Routes - Fatal编程技术网

Php 尝试创建新路由时出现Zend\ServiceManager\Exception\ServiceNotCreateDexException

Php 尝试创建新路由时出现Zend\ServiceManager\Exception\ServiceNotCreateDexException,php,zend-framework,routes,Php,Zend Framework,Routes,我尝试在我的一个模块中创建一个新路由,以与项目中的新控制器相对应 但是我犯了这个错误,我不知道它是从哪里来的: 尝试创建shopmanagementcontrollershopmanagement(别名:Shopmanagement\Controller\Shopmanagement)时,为此实例类型注册了无效工厂 我得到了这个线索: 0/var/www/routedudrive.fr/vendor/zendframework/zend servicemanager/src/serviceman

我尝试在我的一个模块中创建一个新路由,以与项目中的新控制器相对应

但是我犯了这个错误,我不知道它是从哪里来的:

尝试创建shopmanagementcontrollershopmanagement(别名:Shopmanagement\Controller\Shopmanagement)时,为此实例类型注册了无效工厂

我得到了这个线索:

0/var/www/routedudrive.fr/vendor/zendframework/zend servicemanager/src/servicemanager.php(634): Zend\ServiceManager\AbstractPluginManager->createFromFactory('shopmanagementc…'), “店铺管理\…”)

1/var/www/routedudrive.fr/vendor/zendframework/zend servicemanager/src/servicemanager.php(597): Zend\ServiceManager\ServiceManager->doCreate('Shopmanagement\…', “shopmanagementc…”

2/var/www/routedudrive.fr/vendor/zendframework/zend servicemanager/src/servicemanager.php(530): Zend\ServiceManager\ServiceManager->创建(数组)

3/var/www/routedudrive.fr/vendor/zendframework/zend servicemanager/src/AbstractPluginManager.php(161): Zend\ServiceManager\ServiceManager->get('Shopmanagement\…',true)

4/var/www/routedudrive.fr/vendor/zendframework/zend mvc/src/DispatchListener.php(94): Zend\ServiceManager\AbstractPluginManager->get('Shopmanagement\…'))

5[内部函数]:Zend\Mvc\DispatchListener->onDispatch(对象(Zend\Mvc\MvcEvent)) 6/var/www/routedudrive.fr/vendor/zendframework/zend eventmanager/src/eventmanager.php(490): 调用用户函数(数组,对象(Zend\Mvc\MvcEvent))

7/var/www/routedudrive.fr/vendor/zendframework/zend eventmanager/src/eventmanager.php(263): Zend\EventManager\EventManager->triggerListeners('dispatch', 对象(Zend\Mvc\MvcEvent),对象(闭包))

8/var/www/routedudrive.fr/vendor/zendframework/zend mvc/src/Application.php(340): Zend\EventManager\EventManager->triggerEventUntil(对象(闭包), 对象(Zend\Mvc\MvcEvent))

9/var/www/routedudrive.fr/public/index.php(21):Zend\Mvc\Application->run()

10{main}

这是我的module.config.php

<?php
return array(
    'controllers' => array(
        'factories' => array(
            'Backshop\Controller\Backshop' => Backshop\ControllerFactory\BackshopControllerFactory::class,
            'Shopmanagement\Controller\Shopmanagement' => Shopmanagement\ControllerFactory\ShopmanagementControllerFactory::class,
        ),
    ),
    'router' => array(
        'routes' => array(
            'backshop' => array(
                'type'    => 'segment',
                'options' => array(
                    'route'    => '/backshop[/:action][/:id]',
                    'constraints' => array(
                        'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        'id'     => '[0-9a-zA-Z]+',
                    ),
                    'defaults' => array(
                        'controller' => 'Backshop\Controller\Backshop',
                        'action'     => 'index',
                    ),
                ),
            ),
            'shopmanagement' => array(
                'type'    => 'segment',
                'options' => array(
                    'route'    => '/shopmanagement[/:action][/:id]',
                    'constraints' => array(
                        'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        'id'     => '[0-9a-zA-Z]+',
                    ),
                    'defaults' => array(
                        'controller' => 'Shopmanagement\Controller\Shopmanagement',
                        'action'     => 'index',
                    ),
                ),
            ),
        ),
    ),

    'view_manager' => array(
        'template_path_stack' => array(
            'backshop' => __DIR__ . '/../view',
            'shopmanagement' => __DIR__ . '/../view',
        ),
    ),
);
<?php
namespace Shopmanagement\ControllerFactory;
use Shopmanagement\Controller\ShopmanagementController;
use \Zend\ServiceManager\FactoryInterface;
use \Zend\ServiceManager\ServiceLocatorInterface;

class ShopmanagementControllerFactory implements FactoryInterface
{
    public function createService(ServiceLocatorInterface $serviceLocator) {
        $sm  = $serviceLocator->getServiceLocator();
        //$merchantTable = $sm->get('Backshop\Model\MerchantTable');
        //$accountValidationTable = $sm->get('Backshop\Model\AccountValidationTable');
        $controller = new ShopmanagementController();
        return $controller;
    }
}
<?php
namespace Shopmanagement\Controller;

use Zend\View\Model\ViewModel;

class ShopmanagementController extends AbstractActionController{

    public function __construct()
    {

    }

    public function indexAction(){
        return new ViewModel();
    }
}

我终于找到了解决方案,如果它能帮助别人的话

我只是忘记了在Module.php文件中引用我的名称空间,如下所示:

public function getAutoloaderConfig()
    {
        return array(
            'Zend\Loader\ClassMapAutoloader' => array(
                __DIR__ . '/autoload_classmap.php',
            ),
            'Zend\Loader\StandardAutoloader' => array(
                'namespaces' => array(
                    __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
                    'Shopmanagement'        => __DIR__ . '/src/' . 'Shopmanagement', //This line
                ),
            ),
        );
    }