对于Nukeface:Zend Framework 2 + Doctrine2 - Blog tutorialZend \ Mvc \ Controller \ ControllerManager :: createFromInvokable:检索失败

时间:2016-08-27 22:22:26

标签: zend-framework

关注您的博客项目。复制/粘贴代码但遇到了下面描述的问题。感谢您对我推送到Git存储库Farsideman / Zend-Framework-2-Doctrine2 --- Blog-tutorial的代码的帮助。即使阅读了类似问题的答案,我也无法理解它。

Zend \ Mvc \ Controller \ ControllerManager :: createFromInvokable:通过可调用类“Blog \ Controller \ PostController”检索“blogcontrollerpost(别名:Blog \ Controller \ Post)”失败;类不存在

由于

Farsideman

1 个答案:

答案 0 :(得分:0)

哇,差不多一年,没有意识到已经发布了一个问题。对于那个很抱歉。

希望你现在想出来,以防万一:问题意味着它无法找到指示的控制器。

当模块配置发生错误或文件不在具有正确大写字母的完全正确的文件夹中时,最有可能(并且大多数时候)发生这种情况。

因此,从项目的根开始,确保Controller的结构如下:

/module/Blog/src/Controller/PostController.php

接下来,检查module.config.php文件并确保您拥有此文件,具体如下:

'controllers'  => [
    'invokables' => [
        'Blog\\Controller\\Post' => 'Blog\\Controller\\PostController',
    ],
],

此处Blog\\Controller\\PostBlog\\Controller\\PostController的别名(替代名称)。

尝试使用别名(没有Controller)是在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年中期发布,现在它已经过时了。

另外,作为一方,在AbstractActionController.php类中,添加以下内容:

/**
 * {@inheritdoc}
 */
public function getServiceLocator()
{
    return $this->getServiceLocator();
}

这将覆盖它的父函数,其中包含在Zend Framework 3中不推荐使用此函数并删除其功能的巨大警告。