Magento 2: Kemana Modul Pihak Ketiga Pergi?

22

Saya baru saja menginstal rilis resmi pertama Magento 2. Saya terkejut menemukan bahwa app/codefolder itu hilang

app/code

Ini untuk versi yang diunduh dari situs web dan versi yang diinstal melalui komposer. Juga, ketika saya mencoba untuk membuat app/codefolder secara manual , dan kemudian melakukan php bin/magento module:enable Pulsestorm_MyModuleuntuk mengaktifkan modul sampel, saya mendapatkan kesalahan berikut

 Unknown module(s): 'Pulsestorm_MyModule'

Di mana modul pihak ketiga seharusnya tinggal? Jika jawabannya adalah "repositori sumber dan diinstal melalui komposer", bagaimana pengembang modul perlu menyusun modul mereka untuk hidup dalam repositori Magento 2?

Alan Storm
sumber

Jawaban:

18

Lebih disukai 3PLs akan hidup di direktori vendor bersama dengan yang lainnya. Namun ... :) Kita semua tahu biasanya ada kode khusus yang ditulis untuk hampir setiap pembuatan situs kustom di luar sana, dan IMO ini termasuk dalam app / code / still. Ya, Anda masih dapat menjalankan modul dari aplikasi / kode.

Semua modul, terlepas dari lokasi, harus memiliki composer.jsondan registration.phpfile yang digunakan untuk memasukkan modul ke dalam sistem. Anda juga membutuhkan etc/modules.xmlfile tersebut. Secara teknis, ini yang diperlukan untuk mendaftar modul:

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

2 directories, 3 files

Untuk mengaktifkan dan menjalankan modul, Anda perlu menjalankan setup:upgradedan kemudian cache:flushagar sistem mengenali dan memuat komponen baru Anda:

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

Pembaruan: Dua metode untuk menginstal modul dari repo GitHub publik: https://gist.github.com/davidalger/77761f13d9752b117f35

davidalger
sumber
Saya belum perlu modul: aktifkan kecuali saya sebelumnya menonaktifkannya. Apakah ada parameter yang dapat Anda tetapkan untuk menginstal ekstensi yang dinonaktifkan?
Eirik
@Eirik Jika Anda menginstal dari repo melalui komposer, itu dilakukan oleh komposer. Jika Anda cukup meletakkan file-file ini di sana, saat itulah Anda harus mengaktifkannya. Setidaknya saya cukup yakin itulah yang saya temukan tepat setelah GA karena saya sedang memoles slide untuk berbicara di sini di #phpworld :)
davidalger
terima kasih banyak belum mendorong repo karena saya bekerja secara lokal. Informasi hebat.
Eirik
6

Alan, mereka masih masuk app/code. Pastikan Anda memiliki registration.phpdi folder modulename yang berisi yang berikut:

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

Lalu lari:

php bin/magento setup:upgrade

Baru saja diuji pada rilis Magento 2 CE yang baru dan berfungsi dengan baik.

Eirik
sumber
Terima kasih @Eirik, memang begitu. Tidak jelas apakah registrasi. Php adalah sesuatu yang tidak seharusnya ada, atau sesuatu yang akan membuat rilis final. Cukup jelas sekarang :)
Alan Storm