Zf2 Неустранимая ошибка: класс ‘BookList Controller BookController’ не найден

#php #zend-framework #zend-framework2

#php #zend-framework #zend-framework2

Вопрос:

Я разрабатываю приложение в zf2. когда я определяю маршруты module.config.php и получаю к ним доступ в своем браузере, php выдает ошибку :

Fatal error: Class 'BookListsrcBookListControllerBookController' not found in C:Program Files (x86)EasyPHP-DevServer-14.1VC9datalocalwebprojectsautoclickskeleton-applicationvendorzendframeworkzendframeworklibraryZendServiceManagerAbstractPluginManager.php on line 170

вот мой module.config.php :

 return array(
    'controllers' => array(
        'invokables' => array(
            'BookListsrcBookListControllerBook' => 'BookListsrcBookListControllerBookController'
        )
    ),
    'router' => array(
        'routes' => array(
            'book' => array(
                'type' => 'segment',
                'options' => array(
                    'route' => '/book[/][:action][/:id]',
                    'constraints' => array(
                        'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        'id' => '[0-9] '
                    ),
                    'defaults' => array(
                        'controller' => 'BookListsrcBookListControllerBook',
                        'action' => 'index'
                    )
                )
            )
        )
    ),
    'view_manager' => array(
        'template_path_stack' => array(
            'book' => __DIR__ . '/../view'
        )
    )
 

У меня есть мое BookController пространство имен BookListsrcBookListController

Комментарии:

1. вы настроили автозагрузчик для своего модуля?

Ответ №1:

Это должно быть:

 'controllers' => array(
    'invokables' => array(
        'BookListControllerBook' => 'BookListControllerBookController' // <- change key and value
    )
),
'router' => array(
    'routes' => array(
        'book' => array(
            'type' => 'segment',
            'options' => array(
                'route' => '/book[/][:action][/:id]',
                'constraints' => array(
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'id' => '[0-9] '
                ),
                'defaults' => array(
                    'controller' => 'BookListControllerBook', // <- change
                    'action' => 'index'
                )
            )
        )
    )
),
 

Комментарии:

1. Я попробовал и изменил свое пространство имен на BookList Controller для моего класса контроллера, но это не работает

2. Какую ошибку вы получаете сейчас? Каков полный путь к вашему контроллеру book?

3. мой полный путь к классу — skeleton-application module BookList src BookList Controller BookController, и ошибка является неустранимой ошибкой: класс ‘BookList Controller BookController’ не найден в C:Program Файлы (x86)EasyPHP-DevServer-14.1VC9datalocalwebprojectsautoclickskeleton-applicationvendorzendframeworkzendframeworklibraryZendServiceManagerAbstractPluginManager.php в строке 170

4. Вы также сказали в своем вопросе, что ваш контроллер имеет пространство имен as BookListsrcBookListController , но это должно быть BookListController . Если он по-прежнему не работает, пожалуйста, отредактируйте свой вопрос, чтобы включить первые несколько строк класса контроллера (до class BookController строки включительно).

Ответ №2:

Вы не должны указывать путь, а только имя класса, например, remove BookList src part . Пространство имен также не должно содержать папку src

Комментарии:

1. не могли бы вы опубликовать фрагмент кода, пожалуйста, я не завершаю его.

2. смотрите ответ @Tim Fountain