Di mana membuat ekstensi khusus untuk Magento2?

9

Beberapa artikel mendorong untuk membuat ekstensi khusus di app/codedan beberapa lainnya mendorong untuk membuatnya di bawah vendor. Apakah kedua metode ini baik-baik saja?

Bagaimana jika saya ingin mengganti modul vendor? Apakah saya perlu menulis modul khusus saya juga di dalam vendorfolder atau app/code?

Apakah mereka bertindak sebagai codepools seperti di Magento 1.x?

Tolong ada yang menjelaskan tujuan masing-masing direktori.

Sukeshini
sumber
Menurut saya kita harus membuatnya di app / kode.
Arjun

Jawaban:

7

Anda bisa melihat folder app/codedan vendorsebagai codepools dalam M1, tetapi mereka tidak benar-benar codepools.
Tidak ada konsep "codepool" di M1.

  • vendorfolder adalah untuk modul yang Anda unduh melalui komposer. Anda tidak boleh menulis kode di folder itu.
  • app/codeadalah taman bermain Anda. Tambahkan ekstensi Anda sendiri di sini.

Jika Anda perlu menulis ulang / memperluas sesuatu di vendorfolder Anda dapat melakukannya di app/codefolder. Pastikan Anda menentukan ketergantungan lunak pada module.xmlmodul Anda, seperti yang Anda lakukan pada app/etc/modules/Namespace_Module.xmlfile M1 .
Satu-satunya perbedaan adalah bahwa dalam m2 mereka sebenarnya bukan dependensi. Mereka adalah urutan.
Dengan cara ini modul Anda akan diambil setelah dari vendorfolder

Marius
sumber
Tidak sepenuhnya benar. Jika Anda menginstal M2 via github app/codebukan taman bermain;)
Raphael di Digital Pianism
@Marius: Terima kasih banyak. Itu menghapus keraguan saya. Jika Anda ingin mengganti XMfile L dalam modul vendor, apakah kami masih harus menyebutkan dependensi di dalamnya module.xml ?
Sukeshini
@RaphaelatDigitalPianism. Iya dan tidak. Anda mendapatkan modul inti dalam app/codekasus itu, tetapi Anda masih bisa menambahkan modul Anda sendiri. Dan satu-satunya alasan Anda harus menginstal m2 via github adalah untuk bermain-main dengannya dan / atau berkontribusi padanya. Jadi ini secara teknis masih membuat app/codetaman bermain Anda.
Marius
@Sukeshini. Tidak yakin tentang itu, tapi saya pikir Anda harus melakukannya.
Marius
@Marius setuju dengan semua yang Anda katakan saya katakan app/code/Vendoradalah taman bermain Anda jadi tidak ada risiko untuk memecahkan hal
Raphael di Digital Pianism
2

app/code jelas merupakan tempat yang tepat untuk modul projet Anda.

Anda tidak boleh menulis kode di dalam vendor(direktori ini tidak diabaikan ke dalam kontrol sumber Anda), karena dikelola oleh komposer saja dan didedikasikan untuk modul atau modul pihak ketiga yang ingin Anda gunakan kembali (dan Anda telah menerbitkan pada packagist atau repositori satis Anda sendiri ).

Aurélien FOUCRET
sumber