English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
- Upgrade
- Einführung
- Installation
- Verwendung (Ohne Laravel)
- Verwendung (Mit Laravel)
- Konfiguration
- Support Richtlinien
- Lizenz - MIT Lizenz
Upgrade
Wenn Sie von einer vorherigen Version upgraden, lesen Sie bitte den Upgrade-Leitfaden für Breaking Changes und Migrationsschritte.
Einführung
MJML ist eine Auszeichnungssprache, die speziell entwickelt wurde, um den Prozess des Codierens reaktionsschneller E-Mails zu vereinfachen. Ihre semantische Syntax sorgt für Benutzerfreundlichkeit und Einfachheit, während ihre umfangreiche Bibliothek von Standardkomponenten die Entwicklung beschleunigt und die Komplexität Ihres E-Mail-Codes verringert. Die Open-Source-Engine von MJML generiert qualitativ hochwertiges, responsives HTML, das den besten Praktiken entspricht. Wenn Sie die Frustrationen beim Arbeiten mit Outlook erlebt haben, ist dieses Paket genau für Sie.
Unsere MJML-Implementierung dient als Wrapper für die offizielle MJML-API. Sie ermöglicht die bequeme Kompilierung von MJML in HTML direkt innerhalb von PHP, ohne die Notwendigkeit von NodeJS. Dieses Paket eignet sich ideal für PHP-Anwendungen, die MJML integrieren möchten, ohne die Umstände der Installation von NodeJS und der MJML-CLI.
Beispiel
// Ohne Laravel(new MJML)->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'); // Minified 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>'); // Mit LaravelMJML::render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'); // Mit Laravel und minified HTMLMJML::minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>');
Installation
-
Fügen Sie zunächst Folgendes zu Ihrer
composer.json-Datei hinzu, um unserem Paket zu instruieren, die richtigen Binärdateien für Ihr Betriebssystem herunterzuladen, wenn unser Paket installiert wird. Die Binärdateien werden heruntergeladen, nachdem Sieinstall,updateoderdump-autoloadausgeführt haben.{"post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]}Die MJML-Binärdatei wird von unserem CDN bezogen und im "bin"-Ordner dieses Pakets während der Installation oder Aktualisierung von Composer gespeichert. Stellen Sie sicher, dass Sie die notwendigen Binärdateien für Ihre lokalen und Produktionsumgebungen geladen haben.
Standardmäßig wird
allalle Binärdateien herunterladen, die wir unterstützen. Wir empfehlen, dies auf die Betriebssysteme und Architekturen, die Sie benötigen, einzuschränken, um Bandbreite und Installationszeiten zu sparen. Die folgenden Binärdateien sind verfügbar.Betriebssystem Architektur Composer Post Update-Befehl Alle Alle DefectiveCode\MJML\PullBinary::allDarwin (MacOS) arm64 DefectiveCode\MJML\PullBinary::darwin-arm64Darwin (MacOS) x64 DefectiveCode\MJML\PullBinary::darwin-x64Linux (glibc) arm64 DefectiveCode\MJML\PullBinary::linux-arm64Linux (glibc) x64 DefectiveCode\MJML\PullBinary::linux-x64Linux (musl) arm64 DefectiveCode\MJML\PullBinary::linux-arm64-muslLinux (musl) x64 DefectiveCode\MJML\PullBinary::linux-x64-musl -
Installieren Sie dann das PHP-Paket, indem Sie den folgenden Composer-Befehl ausführen:
composer require defectivecode/mjml -
Das war's! Wenn Sie Laravel verwenden, wird unser Paket automatisch mit der Paketentdeckung von Laravel installiert.
Verwendung (Ohne Laravel)
Siehe die Verwendung mit Laravel unten, wenn Sie Laravel verwenden.
MJML rendern
Um MJML zu rendern, übergeben Sie einfach Ihre MJML-Zeichenfolge an die render-Methode:
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>');
MJML validieren
Um MJML zu validieren, übergeben Sie einfach Ihre MJML-Zeichenfolge an die isValid-Methode:
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>');
Verwendung (Mit Laravel)
MJML rendern
Um MJML zu rendern, übergeben Sie einfach Ihre MJML-Zeichenfolge an die render-Methode des MJML-Facades:
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>');
MJML validieren
Um MJML zu validieren, übergeben Sie einfach Ihre MJML-Zeichenfolge an die isValid-Methode des MJML-Facades:
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>');
Konfiguration
Sie können die Konfigurationsdatei mit dem folgenden Befehl veröffentlichen:
php artisan vendor:publish --provider="DefectiveCode\MJML\MJMLServiceProvider"
Dies erstellt eine mjml.php-Konfigurationsdatei in Ihrem config-Ordner. Alle Optionen, die in der Konfigurationsdatei aufgelistet sind, werden dem config-Objekt übergeben, wenn Sie das MJML-Facade verwenden.
Konfiguration
Alle Konfigurationsoptionen können durch direktes Aufrufen der folgenden Methoden am MJML-Objekt festgelegt werden.
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>' );
Unser Paket folgt der gleichen Konfiguration wie das offizielle MJML-Paket, mit Ausnahme von:
preprocessors- Diese Option ist nicht verfügbar. Bitte eröffnen Sie einen Pull-Request, wenn Sie diese Option hinzufügen möchten.minifyOptions- Wir verwenden einen leichten, PHP-basierten Minifier anstelle vonhtml-minifier. Der Minifier entfernt Kommentare (außer Outlook-Bedingungen), reduziert Leerzeichen und entfernt Leerzeichen zwischen Tags.
Schriftarten
Unser Paket verwendet standardmäßig die folgenden Schriftarten:
- Open Sans: 'https://fonts.googleapis.com/css?family=Open+Sans:300,400,500,700
- Droid Sans: 'https://fonts.googleapis.com/css?family=Droid+Sans:300,400,500,700
- Lato: https://fonts.googleapis.com/css?family=Lato:300,400,500,700
- Roboto: https://fonts.googleapis.com/css?family=Roboto:300,400,500,700
- Ubuntu: https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700
Sie können die Schriftarten mit den folgenden Methoden ändern:
addFont(string $font, string $url)- Fügen Sie eine Schriftart zur Liste der Schriftarten hinzu.removeFont(string $font)- Entfernen Sie eine Schriftart aus der Liste der Schriftarten.setFonts(array $fonts)- Setzen Sie die Liste der Schriftarten. Sie sollten ein Array von Schriftarten in diesem Format bereitstellen:['font-name' => 'font-url'].
Kommentare
Kommentare werden standardmäßig beibehalten. Wenn Sie Kommentare entfernen möchten, können Sie die Methode removeComments() verwenden.
Sie können removeComments() auch rückgängig machen, indem Sie die Methode keepComments() aufrufen.
Include ignorieren
Standardmäßig wird unser Paket alle mj-include-Tags einfügen. Sie können dieses Verhalten anpassen, indem Sie die Methode ignoreIncludes(bool $ignore) aufrufen.
Verschönern
Unser Paket verschönert das HTML mit js-beautify mit den folgenden Standardoptionen:
- indentSize: 2
- wrapAttributesIndentSize: 2
- maxPreserveNewline: 0
- preserveNewlines: false
Während
js-beautifysnake_case verwendet, um Optionen bereitzustellen, sollten Sie camelCase verwenden, wenn Sie unser Paket verwenden. Wir haben diese Wahl getroffen, um unser Paket konsistent mit den restlichen Konfigurationsoptionen zu halten. Unser Paket konvertiert die camelCase-Optionen automatisch in snake_case.
Sie können eine beliebige dieser Optionen durch Bereitstellung einer gültigen js-beautify-Konfiguration mit den folgenden Methoden überschreiben:
setBeautifyOptions(array $options)- Setzen Sie diejs-beautify-Optionen.addBeautifyOption(string $option, mixed $value)- Fügen Sie einejs-beautify-Option hinzu.removeBeautifyOption(string $option)- Entfernen Sie einejs-beautify-Option.
Minimieren
Unser Paket minimiert die HTML-Ausgabe, wenn dies aktiviert ist. Die Minimierung führt die folgenden Schritte aus:
- Entfernen von HTML-Kommentaren (behalte Outlook-Bedingungskommentare wie
<!--[if mso]>) - Reduzierung mehrerer Leerzeichen auf einzelne Leerzeichen
- Entfernen von Leerzeichen zwischen HTML-Tags
Sie können die Minimierung aktivieren oder deaktivieren, indem Sie die Methode minify(bool $minify) aufrufen.
Warum PHP-basierte Minimierung? Das offizielle MJML-Paket verwendet
html-minifierfür die Minimierung, das eine bekannte ReDoS-Anfälligkeit (CVE-2022-37620) aufweist, für die kein Fix verfügbar ist, da das Paket nicht gewartet wird. Um zu vermeiden, dass verwundbare Abhängigkeiten gebündelt werden, haben wir die Minimierung auf PHP mit einer leichten, sicheren Implementierung verlagert.
Validierungsstufe
Unser Paket validiert die MJML standardmäßig mit der soft-Validierungsstufe. Sie können dies ändern, indem Sie die Methode validationLevel(ValidationLevel $validationLevel) verwenden. Die folgenden Validierungsstufen sind verfügbar:
strict- Ihr Dokument wird validiert und nicht gerendert, wenn es Fehler aufweistsoft- Ihr Dokument wird validiert und gerendert, auch wenn es Fehler aufweistskip- Ihr Dokument wird ohne Validierung gerendert.
Dateipfad
Unser Paket verwendet standardmäßig das Verzeichnis .. Sie können dies ändern, indem Sie die Methode filePath(string $path) aufrufen.
Saft
Wir bieten standardmäßig keine Saftoptionen an. Sie können Saftoptionen mit den folgenden Methoden hinzufügen:
setJuiceOptions(array $options)- Setzen Sie die Saftoptionen.addJuiceOption(string $option, mixed $value)- Fügt eine Saftoption hinzu.removeJuiceOption(string $option)- Entfernt eine Saftoption.setJuicePreserveTags(array $tags)- Setzen Sie die Saftbeibehaltungstags.addJuicePreserveTag(string $tag, mixed $value)- Fügt ein Saftbeibehaltungstag hinzu.removeJuicePreserveTag(string $tag)- Entfernt ein Saftbeibehaltungstag.
Support Richtlinien
Danke, dass Sie sich für unser Open-Source-Paket entschieden haben! Bitte nehmen Sie sich einen Moment Zeit, um diese Unterstützungsrichtlinien durchzulesen. Sie helfen Ihnen, das Beste aus unserem Projekt herauszuholen.
Community-gesteuerte Unterstützung
Unser Open-Source-Projekt wird von unserer großartigen Community unterstützt. Wenn Sie Fragen haben oder Hilfe benötigen, sind StackOverflow und andere Online-Ressourcen Ihre besten Optionen.
Bugs und Priorisierung von Funktionen
Die Realität des Managements eines Open-Source-Projekts bedeutet, dass wir nicht sofort jeden gemeldeten Fehler oder jede Funktionsanfrage angehen können. Wir priorisieren Probleme in der folgenden Reihenfolge:
1. Bugs, die unsere kostenpflichtigen Produkte betreffen
Bugs, die unsere kostenpflichtigen Produkte beeinträchtigen, haben immer die höchste Priorität. In einigen Fällen behandeln wir möglicherweise nur Bugs, die uns direkt betreffen.
2. Community Pull Requests
Wenn Sie einen Bug identifiziert haben und eine Lösung haben, reichen Sie bitte einen Pull Request ein. Nach den Problemen, die unsere Produkte betreffen, geben wir diesen community-gesteuerten Fehlerbehebungen die nächsthöchste Priorität. Sobald Ihr Lösungsvorschlag geprüft und genehmigt wurde, werden wir Ihre Lösung zusammenführen und Ihre Beiträge anerkennen.
3. Finanzielle Unterstützung
Für Probleme außerhalb der genannten Kategorien können Sie sich entscheiden, deren Lösung zu finanzieren. Jedes offene Problem ist mit einem Bestellformular verknüpft, über das Sie finanziell beitragen können. Wir priorisieren diese Probleme basierend auf dem bereitgestellten Finanzierungsbetrag.
Community-Beiträge
Open Source gedeiht, wenn seine Community aktiv ist. Auch wenn Sie keine Bugs beheben, ziehen Sie in Betracht, durch Codeverbesserungen, Dokumentationsaktualisierungen, Tutorials oder durch Unterstützung anderer in Community-Kanälen einen Beitrag zu leisten. Wir ermutigen alle, als Community zusammenzuarbeiten, um die Arbeit im Bereich Open Source zu unterstützen.
Nocht einmal: DefectiveCode wird Bugs priorisieren, basierend darauf, wie sie unsere kostenpflichtigen Produkte, Community-Pull-Requests und die finanzielle Unterstützung für Probleme beeinträchtigen.
Lizenz - MIT Lizenz
Copyright © Defective Code, LLC. Alle Rechte vorbehalten
Hiermit wird jedermann, der eine Kopie dieser Software und der dazugehörigen Dokumentationsdateien (die "Software") erhält, kostenlos die Erlaubnis erteilt, die Software ohne Einschränkung zu nutzen, einschließlich, aber nicht beschränkt auf das Recht, die Software zu verwenden, zu kopieren, zu modifizieren, zusammenzuführen, zu veröffentlichen, zu vertreiben, Unterlizenzen zu erteilen und/oder Kopien der Software zu verkaufen, sowie Personen, denen die Software bereitgestellt wird, dies zu gestatten, vorbehaltlich der folgenden Bedingungen:
Die obige Urheberrechtshinweis und diese Erlaubnismitteilung sind in allen Kopien oder wesentlichen Teilen der Software enthalten.
DIE SOFTWARE WIRD "WIE BESEHEN" BEREITGESTELLT, OHNE GARANTIE IRGENDWELCHER ART, WEDER AUSDRÜCKLICH NOCH STILLSCHWEIGEND, EINSCHLIESSLICH, ABER NICHT BEGRENZT AUF DIE GARANTIEN DER MARKTFÄHIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. IN KEINEM FALL SIND DIE AUTOREN ODER URHEBERRECHTSINHABER FÜR IRGENDEINEN ANSPRUCH, SCHÄDEN ODER ANDERE HAFTUNGEN HAFTBAR, OB IN EINER KLAUSEL FÜR VERTRAG, DELIKT ODER ANDERS, DIE AUS DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN GEHEIMNISSEN IN DER SOFTWARE ENTSTEHEN.