Magento 2: Куди йдуть сторонні модулі?


22

Я щойно встановив перший офіційний реліз Magento 2. Я з подивом виявив, що app/codeпапки вже немає

app/code

Це було як для версії, завантаженої з веб-сайту, так і для версії, встановленої через композитор. Крім того, коли я намагався створити app/codeпапку вручну , а потім зробити a, php bin/magento module:enable Pulsestorm_MyModuleщоб увімкнути зразок модуля, я отримав таку помилку

 Unknown module(s): 'Pulsestorm_MyModule'

Де повинні жити сторонні модулі? Якщо відповідь - "сховище джерела та встановлено через композитор", як розробнику модулів необхідно структурувати свої модулі, щоб жити у сховищі Magento 2?

Відповіді:


18

Переважно 3PL будуть жити в каталозі постачальників разом з усім іншим. Однак… :) Ми всі знаємо, що зазвичай існує спеціальний код, написаний майже для кожної власної веб-сторінки, і цей IMO належить до програми / коду / досі. Так, ви все ще можете запустити модуль із програми / коду.

Усі модулі, незалежно від місця розташування, повинні мати файл composer.jsonі registration.phpфайл, який використовується для потрапляння модуля в систему. Вам також потрібен etc/modules.xmlфайл. Це технічно все, що потрібно для реєстрації модуля:

$ tree app/code/Alger/
app/code/Alger/
└── Skeleton
    ├── composer.json
    ├── etc
       └── module.xml
    └── registration.php

2 directories, 3 files

Щоб запустити модуль і запустити його, потрібно запустити, setup:upgradeа потім cache:flushсистема і розпізнати, і завантажити ваш новий компонент:

$ bin/magento module:enable Foo_Bar
$ bin/magento setup:upgrade -q && bin/magento cache:flush -q

Оновлення: два способи встановлення модуля з загального репортажу GitHub: https://gist.github.com/davidalger/77761f13d9752b117f35


Мені не потрібен модуль: увімкнути, якщо я раніше його не відключив. Чи є параметр, який можна встановити, щоб встановити розширення вимкнено?
Ейрік

@Eirik Якщо ви встановлюєте з репо через композитор, це робить композитор. Якщо ви просто помістіть ці файли туди, тоді вам потрібно це ввімкнути. Принаймні, я майже впевнений, що це я знайшов одразу після GA, коли я шліфував слайди для розмови тут на #phpworld :)
davidalger

велике спасибі ще не підштовхували до репо, поки я працював на місцях. Чудова інформація.
Ейрік

6

Алан, вони все ще заходять app/code. Переконайтеся, що registration.phpу папці з назвою модуля міститься наступне:

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Namespace_Modulename',
    __DIR__
);

Потім запустіть:

php bin/magento setup:upgrade

Просто перевірена на свіжому Magento 2 CE випуску і працює належним чином.


Дякую @Eirik, це було насправді. Не було зрозуміло, чи було б реєстрація.php те, що проскочило, що не повинно, або щось, що зробить остаточний реліз. Досить зрозуміло зараз :)
Alan Storm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.