Cum se creează un modul personalizat în Magento 2
Publicat: 2018-03-19Ce este modulul Magento?
După cum știți, modulul este un director care conține blocuri , controlere , modele , helper , etc – care sunt legate de o caracteristică specifică de afaceri.
În conformitate cu angajamentul Magento față de modularitatea optimă, un modul încapsulează o caracteristică și are dependențe minime de alte module.
Modulele oferă caracteristici de afaceri, cu o logică de sprijin, în timp ce temele influențează puternic experiența utilizatorului și aspectul vitrinei.
Scopul modulului
Scopul fiecărui modul este de a oferi caracteristici specifice produsului prin implementarea de noi funcționalități sau extinderea funcționalității altor module. Fiecare modul este proiectat să funcționeze independent, astfel încât includerea sau excluderea unui anumit modul nu afectează de obicei funcționalitatea altor module.
În Magento 2, modulele vor fi live în directorul aplicație/cod al unei instalări Magento, cu acest format: app/code/<Vendor>/<ModuleName>. Acum vom urma acești pași pentru a crea un modul simplu care să funcționeze pe Magento 2.
Creați un modul Magento 2
- Creați folderul modulului.
- Creați fișierul etc/module.xml.
- Creați fișierul registration.php.
- Rulați scriptul bin/magento setup:upgrade pentru a instala noul modul.
- Verificați dacă modulul funcționează.
Să parcurgem fiecare dintre acești pași în detaliu.
Pasul 1: Creați folderul modulului
- Există două locații posibile pentru module în Magento 2: folderul aplicație/cod și folderul furnizor
În funcție de modul în care a fost instalat Magento 2, modulele de bază pot fi localizate fie în folderele vendor/magento/magento-* (pentru instalarea compozitorului), fie în folderul app/code/Magento/ (pentru clonarea github).
- Pe care dintre aceste locații ar trebui să alegi pentru noul tău modul?
Dacă construiți un modul pentru un anumit proiect, cel mai bine este să alegeți folderul aplicație/cod și să vă dedicați depozitului proiectului.
Dacă construiți o extensie pentru a fi reutilizată, este mai bine să utilizați compozitorul pentru ao crea și să puneți modulul în folderul vendor/<YOUR_VENDOR>/module-something.
Fiecare nume de modul din Magento 2 constă din două părți – furnizorul și modulul în sine, așa că trebuie să definiți numele furnizorului și modulului. Pentru acest exemplu, să numim furnizorul „Learning” și modulul „FirstUnit”.
Să creăm folderul app/code/Learning și în interiorul acestui folder plasăm un alt folder: FirstUnit. Dacă utilizați linia de comandă, codul ar fi:
- cd în folderul rădăcină
- mkdir aplicație/cod/Învățare
- mkdirapp/code/Learning/FirstUnit
Asigurați-vă că aveți permisiunea de a crea fișiere și foldere în instalarea dvs.
Pasul 2: Creați fișierul etc/module.xml
Acest fișier este necesar pentru ca modulul să existe și conține următoarele informații:
- Numele modulului
- Versiunea modulului
- Dependente
Numele modulului este definit de folderele pe care tocmai le-am creat, deoarece în Magento 2, numele claselor trebuie să urmeze structura folderelor. Deoarece am creat folderele Learning/FirstUnit, numele modulului nostru va fi Learning_FirstUnit și toate clasele care aparțin acestui modul vor începe cu Learning\FirstUnit – de exemplu: Learning\FirstUnit\Observer\Test.
Versiunea modulului indică versiunea curentă a schemei bazei de date și a datelor și este utilizată la actualizare. De exemplu, să presupunem că decideți să modificați schema unui tabel în modulul dvs. Cum poți fi sigur că această modificare se va întâmpla în toate cazurile în care codul este implementat? Modificarea bazei de date prin interogări SQL directe nu va funcționa. În schimb, Magento 2 are scripturi de instalare și actualizare în fiecare modul (opțional). Aceste scripturi conțin comenzi pentru a modifica schema sau datele bazei de date. Pentru a urmări dacă se execută sau nu un script, Magento 2 utilizează versiuni de module. De fiecare dată când implementați o nouă modificare a bazei de date, implementați o nouă versiune a unui modul și modificați module.xml corespunzător. Magento salvează versiunea curentă a modulului într-o bază de date, iar dacă valoarea bazei de date și cea din module.xml nu se potrivesc, va executa codul de upgrade.
Dependente. Dacă un modul depinde de altul, fișierul module.xml va avea o declarație specială care definește o listă de module de care depinde modulul curent. Pentru acest exemplu, vom face modulul nostru dependent de Magento_Catalog.
Folosind următorul cod de linie de comandă, creați folderul app/code/Learning/FirstUnit/etc :
mkdir app/code/Learning/FirstUnit/etc
Apoi creați un fișier XML cu următorul conținut:
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Learning_FirstUnit" setup_version="0.0.1"> <secvență> <module name="Magento_Catalog" /> </sequence> </modul> </config>
Rețineți că în fișierul XML am specificat:
- Numele modulului: Learning_FirstUnit (pe baza folderelor pe care le-am creat)
- Versiune: 0.0.1 (versiunea inițială a modulului nostru)
- Dependență: Magento_Catalog. Am putea avea mai multe dependențe. În acest caz, am pune <module name=”..” /> noduri sub nodul secvenței.
Pasul 3: Creați fișierul registration.php
Fiecare modul trebuie să aibă acest fișier, care îi spune lui Magento cum să localizeze modulul. Continuând exemplul nostru, creați fișierul app/code/Learning/FirstUnit/registration.php . Apoi puneți următorul conținut în el:
<?php \Magento\Framework\Component\ComponentRegistrar::register(\Magento\Framework\Component\ComponentRegistrar::MODULE, 'Learning_FirstUnit', __DIR__);
Registration.php este un fișier standardizat care urmează același model pentru toate modulele.
Singurul lucru care variază este numele modulului, care în cazul nostru este Learning_FirstUnit
.
Pasul 4: Rulați comanda „setup:upgrade”.
Rularea acestei comenzi face ca noul dvs. modul să fie activ, notificând Magento despre prezența acestuia.
php bin/magento setup:upgrade
Ar trebui să ecou o cantitate mare de ieșire, dintre care o linie ar trebui să fie Learning_FirstUnit
. Verificați dacă această linie de cod este acolo.
Pasul 5: Verificați dacă noul modul este activ
Până acum, nu am adăugat niciun cod util la modulul nostru – este încă gol (și, prin urmare, invizibil). Pentru a verifica dacă a fost recunoscut, verificați fișierul app/etc/config.php . Are o listă de module auto-generate care sunt active.
Nu schimbați niciodată această listă manual!
cat app/etc/env.php | grep Learning_FirstUnit
Utilizând acești pași, puteți crea cu succes un nou modul în Magento 2.
Citeste mai mult:
Cum să implementați conținut static în Magento 2