Defective Code Logo

Total Downloads Latest Stable Version Latest Stable Version

English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文

U upgrading

Ako nadograđujete sa prethodne verzije, molimo vas da pogledate Vodič za nadogradnju za prekidne promene i korake migracije.

Uvod

MJML je jezik za označavanje posebno dizajniran da pojednostavi proces kodiranja responzivnih email-ova. Njegova semantička sintaksa osigurava lakoću i jednostavnost, dok njegova opsežna biblioteka standardnih komponenti ubrzava razvoj i smanjuje složenost vašeg email koda. Open-source engine MJML generiše visokokvalitetni, responzivni HTML koji se pridržava najboljih praksi. Ako ste iskusili frustracije rada sa Outlook-om, ovaj paket je prilagođen za vas.

Naša implementacija MJML-a služi kao omotač za zvanični MJML API. Omogućava praktičnu kompilaciju MJML-a u HTML direktno unutar PHP-a, bez potrebe za NodeJS-om. Ovaj paket je idealan za PHP aplikacije koje žele da uključe MJML bez gnjavaže instaliranja NodeJS-a i MJML CLI-a.

Primer

// Bez Laravel-a
(new MJML)->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Minifikovani HTML
(new MJML)->minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Sa Laravel-om
MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Sa Laravel-om i minifikovanim HTML-om
MJML::minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Instalacija

  1. Prvo dodajte sledeće u svoj composer.json fajl kako biste uputili naš paket da preuzme ispravne binarne datoteke za vaš operativni sistem kada se naš paket instalira. Binarne datoteke će se preuzeti nakon što pokrenete install, update, ili dump-autoload.

    {
    "post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]
    }

    MJML binarna datoteka će biti preuzeta sa našeg CDN-a i sačuvana u "bin" folderu ovog paketa tokom instalacije ili ažuriranja composera. Osigurajte da imate potrebne binarne datoteke učitane za vaše lokalno i produkciono okruženje.

    Po defaultu, all će preuzeti sve binarne datoteke koje podržavamo. Preporučujemo da ovo suzite na operativne i arhitekturalne sisteme koje trebate kako biste uštedeli na propusnom opsegu i vremenima instalacije. Sledeće su dostupne binarne datoteke.

    Operativni Sistem Arhitektura Komanda za Composer Post Update
    Svi Svi DefectiveCode\MJML\PullBinary::all
    Darwin (MacOS) arm64 DefectiveCode\MJML\PullBinary::darwin-arm64
    Darwin (MacOS) x64 DefectiveCode\MJML\PullBinary::darwin-x64
    Linux (glibc) arm64 DefectiveCode\MJML\PullBinary::linux-arm64
    Linux (glibc) x64 DefectiveCode\MJML\PullBinary::linux-x64
    Linux (musl) arm64 DefectiveCode\MJML\PullBinary::linux-arm64-musl
    Linux (musl) x64 DefectiveCode\MJML\PullBinary::linux-x64-musl
  2. Zatim, instalirajte PHP paket pokretanjem sledeće composer komande:

    composer require defectivecode/mjml
  3. To je to! Ako koristite Laravel, naš paket će se automatski instalirati koristeći Laravel-ovu otkrivanje paketa.

Upotreba (Bez Laravel-a)

Pogledajte upotrebu s Laravel-om u nastavku ako koristite Laravel.

Renderovanje MJML-a

Da biste renderovali MJML, jednostavno prosledite svoj MJML string metodi render:

use DefectiveCode\MJML;
 
$html = (new MJML)->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Validacija MJML-a

Da biste validirali MJML, jednostavno prosledite svoj MJML string metodi isValid:

use DefectiveCode\MJML;
 
$isValid = (new MJML)->isValid(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Upotreba (Sa Laravel-om)

Renderovanje MJML-a

Da biste renderovali MJML, jednostavno prosledite svoj MJML string metodi render na MJML fasadi:

use DefectiveCode\MJML\Facades\MJML;
 
$html = MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Validacija MJML-a

Da biste validirali MJML, jednostavno prosledite svoj MJML string metodi isValid na MJML fasadi:

use DefectiveCode\MJML\Facades\MJML;
 
$isValid = MJML::isValid(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Konfiguracija

Možete objaviti konfiguracioni fajl koristeći sledeću komandu:

php artisan vendor:publish --provider="DefectiveCode\MJML\MJMLServiceProvider"

To će kreirati mjml.php konfiguracioni fajl u vašem config folderu. Sve opcije navedene u konfiguracionom fajlu se prosleđuju config objektu kada koristite MJML fasadu.

Konfiguracija

Sve opcije konfiguracije mogu se postaviti pozivanjem sledećih metoda direktno na MJML objektu.

use DefectiveCode\MJML;
 
$html = (new MJML)
->setMinify(true)
->setBeautify(false)
->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Naš paket prati istu konfiguraciju kao zvanični MJML paket osim za sledeće:

Fonts

Naš paket koristi sledeće fontove po defaultu:

Možete promeniti fontove koristeći sledeće metode:

Komentari

Komentari se čuvaju po defaultu. Ako želite da uklonite komentare, možete koristiti metodu removeComments().

Takođe možete ponovo aktivirati removeComments() pozivanjem metode keepComments().

Ignorisanje Uključivanja

Po defaultu, naš paket će uključiti sve mj-include oznake. Možete prilagoditi ovo ponašanje pozivanjem ignoreIncludes(bool $ignore) metode.

Ulepšavanje

Naš paket će ulepšati HTML koristeći js-beautify sa sledećim defaultnim opcijama:

Dok js-beautify koristi snake_case za pružanje opcija, trebali biste koristiti camelCase kada koristite naš paket. Ovu odluku smo doneli kako bismo zadržali doslednost našeg paketa sa ostatkom opcija konfiguracije. Naš paket će automatski konvertovati camelCase opcije u snake_case.

Možete poništiti bilo koju od ovih opcija pružanjem validne js-beautify konfiguracije koristeći sledeće metode:

Minifikacija

Naš paket će minifikovati HTML izlaz kada je omogućeno. Minifikacija vrši sledeće:

Možete omogućiti ili onemogućiti minifikaciju pozivanjem minify(bool $minify) metode.

Zašto PHP-bazirana minifikacija? Zvanični MJML paket koristi html-minifier za minifikaciju, koja ima poznatu ReDoS ranjivost (CVE-2022-37620) bez dostupnog popravka, jer je paket neodržavan. Kako bismo izbegli bundlovanje ranjivih zavisnosti, prešli smo na minifikaciju u PHP-u koristeći laganu, sigurnu implementaciju.

Nivo Validacije

Naš paket će validirati MJML koristeći soft nivo validacije po defaultu. Ovo možete promeniti koristeći validationLevel(ValidationLevel $validationLevel) metodu. Sledeći nivoi validacije su dostupni:

Putanja Fajla

Naš paket će koristiti . direktorijum po defaultu. Možete promeniti ovo pozivajući metodu filePath(string $path).

Juice

Ne pružamo nikakve juice opcije po defaultu. Možete dodati juice opcije koristeći sledeće metode:

Smjernice za podršku

Hvala što ste odabrali naš paket otvorenog koda! Molimo vas da odvojite trenutak da pregledate ove smjernice za podršku. Pomoći će vam da izvučete maksimum iz našeg projekta.

Podrška vođena zajednicom

Naš projekat otvorenog koda pokreće naša sjajna zajednica. Ako imate pitanja ili trebate pomoć, StackOverflow i ostali online resursi su najbolji izbor.

Greške i prioritizacija funkcionalnosti

Stvarnost upravljanja projektom otvorenog koda je da ne možemo odmah riješiti svaku prijavljenu grešku ili zahtjev za funkcionalnošću. Prioritizujemo probleme u sledećem redu:

1. Greške koje utiču na naše plaćene proizvode

Greške koje utiču na naše plaćene proizvode uvijek će biti naš najveći prioritet. U nekim slučajevima, možda ćemo se fokusirati samo na greške koje direktno utiču na nas.

2. Pull zahtjevi zajednice

Ako ste identificirali grešku i imate rešenje, molimo pošaljite pull zahtjev. Nakon problema koji utiču na naše proizvode, sledeći najveći prioritet daju se ovim ispravkama koje pokreće zajednica. Kada se pregledaju i odobre, spojit ćemo vaše rešenje i priznati vaš doprinos.

3. Finansijska podrška

Za probleme izvan pomenutih kategorija, možete se odlučiti da finansijski podržite njihovo rješavanje. Svaki otvoreni problem je povezan s narudžbenicom na kojoj možete financijski doprinijeti. Prioritizujemo ove probleme na osnovu iznosa finansiranja koji je pružen.

Doprinosi zajednice

Otvoreni kod napreduje kada je njegova zajednica aktivna. Čak i ako ne ispravljate greške, razmislite o doprinosu kroz poboljšanja koda, ažuriranja dokumentacije, tutorijale ili pomažući drugima u zajedničkim kanalima. Veoma ohrabrujemo sve, kao zajednicu, da pomognu u podršci radu otvorenog koda.

Ponovo naglašavamo, DefectiveCode će prioritetizovati greške na osnovu njihovog uticaja na naše plaćene proizvode, pull zahtjeve zajednice i finansijsku podršku primljenu za probleme.

Licenca - MIT Licenca

Autorska prava © Defective Code, LLC. Sva prava zadržana

Ovim se dozvoljava, bez naplate, svakoj osobi koja dobije kopiju ovog softvera i pripadajućeg dokumentacionog materijala (u daljem tekstu "Softver"), da se bavi Softverom bez ograničenja, uključujući, ali ne ograničavajući se na prava da koristi, kopira, modifikuje, spaja, objavljuje, distribuira, sublicencira i/ili prodaje kopije Softvera, te da omogući osobama kojima je Softver dostavljen da učine tako, pod sledećim uslovima:

Gore navedena autorska prava i ova dozvola moraju biti uključeni u sve kopije ili bitne delove Softvera.

SOFTVER SE DOSTAVLJA "KAKAV JESTE", BEZ GARANCIJE BILO KAKVE VRSTE, IZRIČITE ILI IMPLICIRANE, UKLJUČUJUĆI, ALI NE OGRANIČAVAJUĆI SE NA GARANCIJE PRODAJE, PRIKLADNOSTI ZA ODREĐENU NAMENU I NEPOŠTOVANJE PRAVA. U NIKAKVOM SLUČAJU AUTORI ILI NOSIOCI AUTORSKIH PRAVA NEĆE BITI ODGOVORNI ZA BILO KAKVE POTRAŽIVANJA, ŠTETE ILI DRUGE OBAVEZE, BEZ OBZIRA NA TO DA LI JE U PITANJU TUŽBA ZBOG UGOVORA, DELIKTA ILI DRUGIH RAZLOGA, PROIZAŠLE IZ, VAN ILI U VEZI SA SOFTVEROM ILI KORIŠĆENJEM ILI DRUGIM TRANSAKCIJAMA U VEZI SA SOFTVEROM.