ZF3 - 如何从供应商目录中的框架扩展控制器?

时间:2016-10-27 15:11:31

标签: php zend-framework zend-framework2 composer-php zend-framework3

我正在使用ZendFramework3进行项目。我有一个有效的模块 (例如:myProject / module / MyModule)。它正在工作的一切,但我想扩展MyModule / src / Controller / CrudController中的控制器。我的意思是,我的ZF3项目中有一个简单的模块,我希望这个模块中的控制器扩展一个位于myProject / vender / MyFramework / Mvc / Controller /

中的框架中的Controller

问题是致命错误:在第7行的C:\ wamp \ www \ myProject \ module \ MyModule \ src \ Controller \ MyController.php中找不到类'MyFramework \ Mvc \ Controller \ ExtendedController'

<?php
namespace MyModule\Controller;

use MyFramework\Mvc\Controller\ExtendedController;

class MyController extends ExtendedController
{
}

我不知道我应该怎样做才能找到置于供应商目录框架中的Controller。

如果有人可以帮助我,那将是一种乐趣。

目前,我的代码基于Zend的功能。例如,我们可以找到这个

use Zend\Mvc\Controller\AbstractActionController;

我认为扩展ExtendedController的控制器'MyController'找到了正确的文件,但控制器可能没有加载或类似的东西

你的 - )

编辑:我的问题已经解决了。问题是需要更新的composer.json。

我在composer.json文件中添加了这段代码:

"autoload" : {
    "psr-0" : { "MyFramework\\": "vendor/MyFramework/{folder}/"},
},

1 个答案:

答案 0 :(得分:0)

看起来作曲家找不到你的模块。看一下zend-mvc中的composer.json文件,尤其是autoload部分。这就是作曲家如何知道如何注册包。

AFAIK你不能只在供应商目录中放置一个包。您需要创建一个完整的composer package并将其添加到composer.json require部分。

在开发过程中可能更容易的是将模块放在./module/目录中。您可以编辑模块,并在准备就绪后通过packagistprivate composer repository发布。 要使其正常工作,您需要将MyFramework添加到项目的自动加载部分:

"autoload": {
    "psr-4": {
        "Application\\": "module/Application/src/",
        "MyFramework\\": "module/MyFramework/src/"
    }
},

显然,您需要在更改自动加载部分后使用composer dump-autoload更新自动加载器。