0

Я работаю с ZendFramework3 для проекта. У меня есть модуль, который работает (например: myProject/module/MyModule). Все, что он работает, но я хотел бы расширить контроллер, который находится в MyModule/src/Controller/CrudController. Я имею в виду, что у меня есть простой модуль в моем проекте ZF3, и я хочу, чтобы контроллер в этом модуле расширил контроллер в каркасе, размещенном в myProject/vender/MyFramework/Mvc/Controller/ZF3 - Как расширить контроллер из фреймворка в каталоге поставщика?

Проблема: Неустранимая ошибка: MyFramework \ Mvc \ Controller \ ExtendedController»не найден в C: \ WAMP \ WWW \ MyProject \ модуль \ MyModule \ SRC \ Controller \ MyController.php в строке 7

<?php 
namespace MyModule\Controller; 

use MyFramework\Mvc\Controller\ExtendedController; 

class MyController extends ExtendedController 
{ 
} 

Я не знаю, что я должен чтобы найти контроллер, размещенный в структуре в каталоге поставщика.

Если кто-то может помочь мне в этом, было бы приятно.

В настоящее время я основываю свой код на том, что делает Zend. Например, мы могли бы найти это

use Zend\Mvc\Controller\AbstractActionController; 

Я думаю, что контроллер «MyController», который расширяет ExtendedController находит нужный файл, но контроллер, вероятно, не загружать или что-то подобное

Yours -)

EDIT: Моя проблема решена. Проблема заключалась в том, что композитор.json нуждался в обновлении.

Я добавил этот код в файле composer.json:

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

ответ

0

Это выглядит как ваш модуль не найден композитором. Посмотрите файл composer.json из zend-mvc, особенно раздел автозагрузки. Так композитор знает, как регистрировать пакеты.

AFAIK вы не можете просто разместить пакет в каталоге поставщика. Вам необходимо создать полный composer package и добавить его в свой раздел composer.json.

Что может быть проще во время разработки, так это размещение вашего модуля внутри каталога ./module/. Вы можете редактировать свой модуль, и когда он будет готов, вы публикуете его через packagist или private composer repository. Чтобы получить эту работу вам нужно добавить MyFramework в раздел автозагрузки вашего проекта:

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

Очевидно, что вам необходимо обновить автозагрузчик с composer dump-autoload после изменения раздела автозагрузки.

+0

На самом деле, это хороший способ решить мою проблему. Но как насчет структуры extern, которая не принадлежит моему проекту. Как основа zend. Zend-framework находится в каталоге поставщика, и мы используем его классы. Я хочу сделать то же самое с моей «MyFramework» – Renaud

+0

Вам нужно сделать это композитор. Создайте свой собственный пакет фреймворков, опубликуйте его где-нибудь (в пакете или вашем частном репо), а затем создайте «композитор» MyFramework \ MyFramework'. Я уже дал вам ссылку о том, как это сделать, но здесь это снова: https://getcomposer.org/doc/02-libraries.md – xtreamwayz