Где создавать собственные расширения для Magento2?

9

В некоторых статьях рекомендуется создавать собственные расширения, app/codeа в других - создавать их в vendor. Оба эти метода в порядке?

Что делать, если я хочу переопределить модуль в vendor? Мне нужно написать свой пользовательский модуль также внутри vendorпапки или app/code?

Они действуют как кодовые пулы, как в Magento 1.x?

Пожалуйста, кто-нибудь уточнить назначение каждого из каталогов.

Sukeshini
источник
По моему мнению, нам нужно сделать это в приложении / коде.
Арджун

Ответы:

7

Вы можете посмотреть на папки app/codeи vendorкак кодовые пулы в M1, но на самом деле они не являются кодовыми пулами.
В M1 нет понятия «кодпул».

  • vendorпапка для модулей, которые вы загружаете через композитор. Вы не должны писать код в этой папке.
  • app/codeэто ваша игровая площадка. Добавьте свои собственные расширения здесь.

Если вам нужно что-то переписать / расширить в vendorпапке, вы можете сделать это в app/codeпапке. Просто убедитесь, что вы указали мягкую зависимость в module.xmlвашем модуле так же, как вы делали это в M1 в app/etc/modules/Namespace_Module.xmlфайле.
Разница лишь в том, что в м2 они на самом деле не являются зависимостями. Это последовательности.
Таким образом, ваш модуль будет загружен после того, как из vendorпапки

Мариус
источник
Не совсем верно. Если вы устанавливаете M2 через github, app/codeэто не игровая площадка;)
Рафаэль на Digital Pianism
@Marius: Большое спасибо. Это очистило мои сомнения. Если вы хотите переопределить XML-файл в модуле вендора, нужно ли нам упоминать зависимости в module.xml ?
Sukeshini
@RaphaelatDigitalPianism. Да и нет. В этом случае вы получаете основные модули app/code, но вы все равно можете добавлять свои собственные модули. И единственная причина, по которой вы должны установить m2 через github - это поиграть с ним и / или внести свой вклад в него. Так что это технически все еще делает app/codeвашу игровую площадку.
Мариус
@Sukeshini. Не уверен в этом, но я думаю, что вы должны.
Мариус
@Мариус согласился со всем, что вы сказали, я бы только сказал, что app/code/Vendorэто ваша игровая площадка, так что нет риска сломать основной материал
Рафаэль из Digital Pianism
2

app/code это определенно правильное место для модулей вашего проекта.

Вы никогда не должны писать код внутри vendor(этот каталог не игнорируется в вашем контроле исходного кода), поскольку он управляется только композитором и предназначен для стороннего модуля или модуля, который вы хотите использовать повторно (и вы опубликовали его на packagist или в своем собственном репозитории удовлетворительно). ).

Орельен FOUCRET
источник