2015-06-28 3 views
0

Я создаю плагин CakePHP3, и я использую библиотеку, которую я написал, которая использует автозагрузку PSR-4. Если мне требуется библиотека в компоновщике приложения, она автоматически загружается, и я могу использовать ее в любом месте моего приложения, включая плагин. Когда я пытаюсь выполнить его через компоновщик плагинов, он устанавливает отлично, и композитор не дает никаких ошибок, но, похоже, не автозагружается. Когда я иду на страницу, управляемую плагином, который использует библиотеку, я получаю ошибку, что класс не найден.CakePHP3 Plugin autoload class

Я делаю что-то неправильно? Я проверил vendor/composer/autoload_psr4.php в моей папке плагина, и мой класс находится в этом файле. Я также запускал composer dump-autoload как в каталоге приложений, так и в каталоге плагинов, но это не помогло.

Я испек плагин с cake bake plugin MyPlugin, а затем отредактировал раздел требуемого компонента composer.json плагина, чтобы включить мою библиотеку. Затем я запустил composer update и установил библиотеку до plugins/MyPlugin/vendor/mylibrary без ошибок.

+0

Как вы устанавливаете плагин? Например, вы добавили свой плагин в упаковщик? –

+0

плагин не в пакете, но библиотека, которую я пытаюсь потребовать в плагине, находится в packagist –

+0

У меня нет времени прямо сейчас для полного ответа, но ваш лучший выбор - puttnig ваш плагин в packagist или с помощью vcs композитор. В противном случае композитор не имеет понятия, где найти свой код и как рассчитать его зависимости. –

ответ

0

Я переместил мой испеченный плагин в свое собственное git repo, а затем добавил, что repo в файл app.json моего приложения и добавил мой плагин в качестве требования. Затем я запустил composer update в моем каталоге приложений, и мой плагин был установлен с его зависимостями в каталог поставщика. Тогда мне просто нужно было загрузить плагин в config/bootstrap.php, и все сработало!

0

Кажется, что что-то не так, создавая поставщика файлов/cakephp-plugins.php. Каким-то образом плагины CakePHP, которые вы устанавливаете самостоятельно, не включены в этот файл. Когда вы добавляете плагины самостоятельно, все работает нормально, но каждый раз, когда вы загружаете обновление/установку композитора, этот файл повторно создается и поэтому вы потеряете свои изменения.

Я вижу, что плагины загружаются в vendor/composer/installed.json, но проблема заключается в том, что их тип - это «библиотека», где он должен быть cakephp-plugin. Я не могу понять, что нужно изменить, поэтому CakePHP видит это как собственный плагин.