Ого, почти год, не понял, вопрос был размещен. Извини за это.
Надеюсь, вы выяснили это сейчас, на всякий случай: проблема означает, что он не может найти указанный контроллер.
Это наиболее вероятно (и большая часть времени) возникает, когда ошибка возникает в конфигурации модуля или если файлы не находятся в точном правильном каталоге с буквально заглавными буквами.
Итак, убедитесь, что структура контроллера выглядит следующим образом, начиная с корня проекта:
/module/Blog/src/Controller/PostController.php
Далее, проверьте файл module.config.php
и убедитесь, что у вас есть это, точно так, как показано ниже:
'controllers' => [
'invokables' => [
'Blog\\Controller\\Post' => 'Blog\\Controller\\PostController',
],
],
Здесь Blog\\Controller\\Post
это псевдоним (альтернативное имя) для Blog\\Controller\\PostController
.
, что он пытается использовать псевдоним (без контроллера) является установка в routes.config.php
, где он сконфигурирован, что он должен использовать класс с этим совмещенного именем и определенной функции, например:
//routeName: blog
//route: /blog
'blog' => [
'type' => 'Literal',
'may_terminate' => true,
'options' => [
'route' => '/blog',
'defaults' => [
'module' => 'Blog',
'controller' => 'Blog\\Controller\\Post',
'action' => 'index',
],
],
],
Все из приведенное выше содержится в главе «Configure module» этого учебника.
Обратите внимание: учебник был опубликован примерно в середине 2016 года, здесь «n», он немного устарел.
Кроме того, в качестве стороны, в AbstractActionController.php
классе, добавьте следующее:
/**
* {@inheritdoc}
*/
public function getServiceLocator()
{
return $this->getServiceLocator();
}
Это приведет к перезаписи его родителей функция, которая включает в себя гигантское предупреждение, что эта функция устарела и ее функциональность, снятую в Zend Framework 3 .