2017-01-10 2 views
1

Я пытаюсь создать новый маршрут в одном из моих модулей, чтобы соответствовать новому контроллеру в моем проекте.Zend ServiceManager Exception ServiceNotCreatedException при попытке создать новый маршрут

Но я получил эту ошибку, и я понятия не имею, где это взялось:

При попытке создать shopmanagementcontrollershopmanagement (псевдоним: Shopmanagement \ Controller \ Shopmanagement) недействительный завод был зарегистрирован для данного типа экземпляра.

Я получил эту StackTrace:

0 /var/www/routedudrive.fr/vendor/zendframework/zend-servicemanager/src/ServiceManager.php(634): Zend \ ServiceManager \ AbstractPluginManager -> createFromFactory ('shopmanagementc ...', 'Shopmanagement \ ...')

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-> создать (Array)

3 /var/www/routedudrive.fr/vendor/zendframework/zend-servicemanager/src/AbstractPluginManager.php(161): Zend \ ServiceManager \ ServiceManager-> Get ('Shopmanagement \ ...', правда,)

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

5 [внутренняя функция]: Зенд \ Mvc \ DispatchListener-> onDispatch (Объект (Зенд \ Mvc \ MvcEvent)) 6 /var/www/routedudrive.fr/vendor/zendframework/zend-eventmanager/src/EventManager. PHP (490): call_user_func (Array, Object (Zend \ Mvc \ MvcEvent))

7 /var/www/routedudrive.fr/vendor/zendframework/zend-eventmanager/src/EventManager.php(263): Zend \ EventManager \ EventManager-> triggerListeners ('отправка', Object (Zend \ Mvc \ MvcEvent), объект (Закрытие))

8 /var/www/routedudrive.fr/vendor/zendframework/zend-mvc /src/Application.php(340): Zen д \ EventManager \ EventManager-> triggerEventUntil (Объект (Закрытие), Объект (Зенд \ Mvc \ MvcEvent))

9 /var/www/routedudrive.fr/public/index.php(21): Зенд \ Mvc \ Application-> бег()

10 {главная}

Вот мой 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', 
     ), 
    ), 
); 

Это мой Shopmanagement ControllerFactory.PHP:

<?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; 
    } 
} 

Это мой ShopmanagementController.php:

<?php 
namespace Shopmanagement\Controller; 

use Zend\View\Model\ViewModel; 

class ShopmanagementController extends AbstractActionController{ 

    public function __construct() 
    { 

    } 

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

Это мой файл дерева:

Filetree

Если у вас есть какие-либо идеи, где эта проблема может приходите, вся помощь по достоинству оценят :)

Спасибо заранее,

Томас

ответ

0

я наконец нашел решение, если это может помочь кому-то.

Я просто forgotted ссылаться на мое пространство имен в моем 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 
       ), 
      ), 
     ); 
    } 
Смежные вопросы