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?

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


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.