Cara Membuat Modul Kustom di Magento 2
Diterbitkan: 2018-03-19Apa itu Modul Magento?
Seperti yang Anda ketahui, modul adalah direktori yang berisi blok , pengontrol , model , pembantu , dll – yang terkait dengan fitur bisnis tertentu.
Sesuai dengan komitmen Magento untuk modularitas optimal, sebuah modul merangkum satu fitur dan memiliki ketergantungan minimal pada modul lain.
Modul menyediakan fitur bisnis, dengan logika pendukung, sementara tema sangat memengaruhi pengalaman pengguna dan tampilan etalase.
Tujuan modul
Tujuan dari setiap modul adalah untuk menyediakan fitur produk tertentu dengan mengimplementasikan fungsionalitas baru atau memperluas fungsionalitas modul lain. Setiap modul dirancang untuk berfungsi secara independen, sehingga penyertaan atau pengecualian modul tertentu biasanya tidak memengaruhi fungsionalitas modul lain.
Di Magento 2, modul akan ditayangkan di direktori app/code dari instalasi Magento, dengan format ini: app/code/<Vendor>/<ModuleName>. Sekarang kita akan mengikuti langkah-langkah ini untuk membuat modul sederhana yang berfungsi di Magento 2.
Buat modul Magento 2
- Buat folder modul.
- Buat file etc/module.xml.
- Buat file registrasi.php.
- Jalankan bin/magento setup:upgrade script untuk menginstal modul baru.
- Periksa apakah modul berfungsi.
Mari kita melalui masing-masing langkah ini secara rinci.
Langkah 1: Buat folder modul
- Ada dua kemungkinan lokasi untuk modul di Magento 2: folder app/code dan folder vendor
Bergantung pada bagaimana Magento 2 telah diinstal, modul inti dapat ditempatkan di folder vendor/magento/magento-* (untuk instalasi komposer) atau di folder app/code/Magento/ (untuk kloning github).
- Manakah dari lokasi ini yang harus Anda pilih untuk modul baru Anda?
Jika Anda membuat modul untuk proyek tertentu, sebaiknya pilih folder app/code dan komit ke repositori proyek.
Jika Anda membuat ekstensi untuk digunakan kembali, lebih baik menggunakan komposer untuk membuatnya, dan letakkan modul Anda di folder vendor/<YOUR_VENDOR>/module-something.
Setiap nama modul di Magento 2 terdiri dari dua bagian – vendor dan modul itu sendiri, jadi Anda perlu menentukan nama vendor dan modul. Untuk contoh ini, beri nama vendor "Learning" dan modul "FirstUnit".
Mari kita buat folder app/code/Learning dan di dalam folder ini letakkan folder lain: FirstUnit. Jika Anda menggunakan baris perintah, kodenya adalah:
- cd ke folder root
- mkdir aplikasi/kode/Belajar
- mkdirapp/code/Learning/FirstUnit
Pastikan Anda memiliki izin untuk membuat file dan folder di instalasi Anda.
Langkah 2: Buat file etc/module.xml
File ini diperlukan agar modul ada dan berisi informasi berikut:
- Nama modul
- Versi modul
- Ketergantungan
Nama modul ditentukan oleh folder yang baru saja kita buat, karena di Magento 2, nama kelas harus mengikuti struktur folder. Karena kita membuat folder Learning/FirstUnit, nama modul kita adalah Learning_FirstUnitdan semua kelas yang termasuk dalam modul ini akan dimulai dengan Learning\FirstUnit – misalnya: Learning\FirstUnit\Observer\Test.
Versi modul menunjukkan versi skema dan data database saat ini, dan digunakan dalam peningkatan. Misalnya, anggap Anda memutuskan untuk mengubah skema tabel di modul Anda. Bagaimana Anda bisa yakin bahwa perubahan ini akan terjadi pada semua instance di mana kode di-deploy? Mengubah database dengan kueri SQL langsung tidak akan berfungsi. Sebagai gantinya, Magento 2 telah menginstal dan memutakhirkan skrip di setiap modul (opsional). Script ini berisi perintah untuk mengubah skema database atau data. Untuk melacak apakah akan menjalankan skrip atau tidak, Magento 2 menggunakan versi modul. Setiap kali Anda mengimplementasikan perubahan database baru, Anda mengimplementasikan versi baru dari sebuah modul dan mengubah module.xml yang sesuai. Magento menyimpan versi modul saat ini dalam database, dan jika nilai database dan yang ada di module.xml tidak cocok, itu akan mengeksekusi kode upgrade.
Ketergantungan. Jika satu modul bergantung pada modul lainnya, file module.xml akan memiliki deklarasi khusus yang mendefinisikan daftar modul yang menjadi sandaran modul saat ini. Untuk contoh ini, kita akan membuat modul kita bergantung pada Magento_Catalog.
Menggunakan kode baris perintah berikut, buat folder app/code/Learning/FirstUnit/etc :
mkdir app/code/Learning/FirstUnit/etc
Kemudian buat file XML dengan konten berikut:
<?xml versi="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <nama modul="Learning_FirstUnit" setup_version="0.0.1"> <urutan> <nama modul="Magento_Catalog" /> </urutan> </modul> </config>
Perhatikan bahwa dalam file XML yang kami tentukan:
- Nama modul: Learning_FirstUnit (berdasarkan folder yang kami buat)
- Versi: 0.0.1 (versi awal modul kami)
- Ketergantungan: Magento_Catalog. Kita bisa memiliki banyak dependensi. Dalam hal ini, kita akan menempatkan node <module name=".” /> di bawah node urutan.
Langkah 3: Buat file registration.php
Setiap modul harus memiliki file ini, yang memberi tahu Magento cara menemukan modul. Melanjutkan contoh kita, buat file app/code/Learning/FirstUnit/registration.php . Kemudian masukkan konten berikut ke dalamnya:
<?php \Magento\Framework\Component\ComponentRegistrar::register(\Magento\Framework\Component\ComponentRegistrar::MODULE, 'Learning_FirstUnit', __DIR__);
Registration.php adalah file standar yang mengikuti pola yang sama untuk semua modul.
Satu-satunya hal yang bervariasi adalah nama modul, yang dalam kasus kami adalah Learning_FirstUnit
.
Langkah 4: Jalankan perintah "setup: upgrade"
Menjalankan perintah ini membuat modul baru Anda aktif, memberi tahu Magento tentang keberadaannya.
pengaturan bin/magento php: tingkatkan
Itu harus menggemakan sejumlah besar output, satu baris di antaranya adalah Learning_FirstUnit
. Verifikasi bahwa baris kode ini ada.
Langkah 5: Periksa apakah modul baru aktif
Sejauh ini, kami belum menambahkan kode yang berguna ke modul kami – masih kosong (dan karena itu tidak terlihat). Untuk memverifikasi bahwa itu telah dikenali, periksa file app/etc/config.php . Ini memiliki daftar modul yang dibuat secara otomatis yang aktif.
Jangan pernah mengubah daftar ini secara manual!
cat app/etc/env.php | grep Learning_FirstUnit
Dengan menggunakan langkah-langkah ini, Anda dapat berhasil membuat modul baru di Magento 2.
Baca lebih banyak:
Cara Menyebarkan Konten Statis di Magento 2