0

我正在为一个项目使用 ZendFramework3。我有一个可以工作的模块(例如:myProject/module/MyModule)。一切正常,但我想扩展 MyModule/src/Controller/CrudController 中的控制器。我的意思是,我的 ZF3 项目中有一个简单的模块,我希望这个模块中的控制器扩展一个框架中的控制器,该框架位于 myProject/vender/MyFramework/Mvc/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
{
}

我不知道该怎么做才能找到放置在供应商目录中的框架中的控制器。

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

目前,我的代码基于 Zend 所做的事情。例如,我们可以找到这个

use Zend\Mvc\Controller\AbstractActionController;

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

你的-)

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

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

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

1 回答 1

0

看起来作曲家找不到您的模块。查看 zend-mvc 中的 composer.json 文件,尤其是自动加载部分。这就是作曲家知道如何注册包的方式。

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

在开发过程中可能更容易的是将模块放在./module/目录中。你可以编辑你的模块,当它准备好时,你可以通过packagist私人作曲家存储库发布它。要使其正常工作,您需要添加MyFramework到项目的自动加载部分:

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

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

于 2016-10-28T06:24:17.730 回答