【问题标题】:ZF3 - How to extends a controller from a framework in a vendor directory?ZF3 - 如何从供应商目录中的框架扩展控制器?
【发布时间】:2017-03-10 08:29:19
【问题描述】:

我正在为一个项目使用 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}/"},
},

【问题讨论】:

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


    【解决方案1】:

    您的模块似乎没有被 Composer 找到。查看 zend-mvc 中的 composer.json 文件,尤其是自动加载部分。这就是 composer 知道如何注册包的方式。

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

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

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

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

    【讨论】:

    • 其实这是解决我问题的好方法。但是不属于我的项目的外部框架呢?作为zend框架。 zend-framework 位于 vendor 目录中,我们使用其中的类。我想用我的“MyFramework”做同样的事情
    • 你需要以作曲家的方式来做。创建您自己的框架包,将其发布到某个地方(在 packagist 或您的私人仓库上),然后执行composer require MyFramework\MyFramework。我已经给了你如何做的链接,但这里又是:getcomposer.org/doc/02-libraries.md
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 2019-01-11
    • 2019-02-18
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多