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 | 中文

# Advertencia de Traducción

Este documento ha sido traducido automáticamente. Si hay errores de traducción, por favor abre una solicitud de extracción en el proyecto y añade el archivo traducido a docs/{Código ISO 639-1}.md.

Introducción

MJML es un lenguaje de marcado diseñado específicamente para simplificar el proceso de codificación de correos electrónicos responsivos. Su sintaxis semántica asegura facilidad y simplicidad, mientras que su extensa biblioteca de componentes estándar acelera el desarrollo y reduce la complejidad de tu base de código de correos electrónicos. El motor de código abierto de MJML genera HTML de alta calidad y responsivo que se adhiere a las mejores prácticas. Si has experimentado las frustraciones de trabajar con Outlook, este paquete está hecho para ti.

Nuestra implementación de MJML sirve como un envoltorio para la API oficial de MJML. Permite la compilación conveniente de MJML a HTML directamente dentro de PHP, sin la necesidad de NodeJS. Este paquete es ideal para aplicaciones PHP que desean incorporar MJML sin la molestia de instalar NodeJS y la CLI de MJML.

Ejemplo

// Sin Laravel
(new MJML)->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// HTML minificado
(new MJML)->minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Con Laravel
MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Con Laravel y HTML minificado
MJML::minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Instalación

  1. Primero, agrega lo siguiente a tu archivo composer.json para instruir a nuestro paquete a obtener los binarios correctos para tu sistema operativo cuando se instale nuestro paquete. Los binarios se descargarán después de ejecutar install, update o dump-autoload.

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

    El binario de MJML se obtendrá de nuestro CDN y se guardará en la carpeta "bin" de este paquete durante la instalación o actualización de composer. Asegúrate de tener los binarios necesarios cargados tanto para tus entornos locales como de producción.

    Por defecto, all obtendrá todos los binarios que soportamos. Recomendamos limitar esto a los sistemas operativos y arquitecturas que necesites para ahorrar en ancho de banda y tiempos de instalación. Los siguientes son los binarios disponibles.

    Sistema Operativo Arquitectura Comando Post Update de Composer
    Todos Todos DefectiveCode\MJML\PullBinary::all
    Darwin (MacOS) arm64 DefectiveCode\MJML\PullBinary::darwin-arm64
    Darwin (MacOS) x64 DefectiveCode\MJML\PullBinary::darwin-x64
    Linux arm64 DefectiveCode\MJML\PullBinary::linux-arm64
    Linux x64 DefectiveCode\MJML\PullBinary::linux-x64
  2. A continuación, instala el paquete PHP ejecutando el siguiente comando de composer:

    composer require defectivecode/mjml
  3. ¡Eso es todo! Si usas Laravel, nuestro paquete se instalará automáticamente utilizando la detección de paquetes de Laravel.

Uso (Sin Laravel)

Consulta el uso con Laravel a continuación si estás usando Laravel.

Renderizando MJML

Para renderizar MJML, simplemente pasa tu cadena MJML al método 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>'
);

Validando MJML

Para validar MJML, simplemente pasa tu cadena MJML al método 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>'
);
# Uso (Con Laravel)
 
## Renderizando MJML
 
Para renderizar MJML, simplemente pasa tu cadena MJML al método `render` en la fachada de MJML:
 
```php
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>'
);

Validando MJML

Para validar MJML, simplemente pasa tu cadena MJML al método isValid en la fachada de MJML:

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>'
);

Configuración

Puedes publicar el archivo de configuración usando el siguiente comando:

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

Esto creará un archivo de configuración mjml.php en tu carpeta config. Todas las opciones listadas en el archivo de configuración se pasan al objeto config cuando usas la fachada de MJML.

# Configuración
 
Todas las opciones de configuración se pueden establecer llamando a los siguientes métodos directamente en el objeto MJML.
 
```php
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>'
);

Nuestro paquete sigue la misma configuración que el paquete oficial de MJML excepto por lo siguiente:

Fuentes

Nuestro paquete utiliza las siguientes fuentes por defecto:

Puedes cambiar las fuentes utilizando los siguientes métodos:

Comentarios

Los comentarios se mantienen por defecto. Si deseas eliminar los comentarios, puedes usar el método removeComments().

También puedes revertir el removeComments() llamando al método keepComments().

Ignorar Inclusiones

Por defecto, nuestro paquete incluirá cualquier etiqueta mj-include. Puedes ajustar este comportamiento llamando al método ignoreIncludes(bool $ignore).

Embellecer

Nuestro paquete embellecerá el HTML utilizando js-beautify con las siguientes opciones por defecto:

Mientras que js-beautify usa snake_case para proporcionar opciones, debes usar camelCase al usar nuestro paquete. Hicimos esta elección para mantener nuestro paquete consistente con el resto de las opciones de configuración. Nuestro paquete convertirá automáticamente las opciones camelCase a snake_case.

Puedes sobrescribir cualquiera de estas opciones proporcionando una configuración válida de js-beautify utilizando los siguientes métodos:

Minificar

Nuestro paquete minificará el HTML utilizando html-minifier-terser con las siguientes opciones por defecto:

Puedes sobrescribir cualquiera de estas opciones proporcionando una configuración válida de html-minifier-terser utilizando los siguientes métodos:

Nivel de Validación

Nuestro paquete validará el MJML utilizando el nivel de validación soft por defecto. Puedes cambiar esto utilizando el método validationLevel(ValidationLevel $validationLevel). Los siguientes niveles de validación están disponibles:

Ruta del Archivo

Nuestro paquete utilizará el directorio . por defecto. Puedes cambiar esto llamando al método filePath(string $path).

Juice

No proporcionamos ninguna opción de juice por defecto. Puedes agregar opciones de juice utilizando los siguientes métodos:

Directrices de Soporte

¡Gracias por elegir nuestro paquete de código abierto! Por favor, tómate un momento para revisar estas directrices de soporte. Te ayudarán a sacar el máximo provecho de nuestro proyecto.

Soporte Impulsado por la Comunidad

Nuestro proyecto de código abierto está impulsado por nuestra increíble comunidad. Si tienes preguntas o necesitas asistencia, StackOverflow y otros recursos en línea son tus mejores opciones.

Prioridad de Errores y Funcionalidades

La realidad de gestionar un proyecto de código abierto significa que no podemos abordar cada error reportado o solicitud de funcionalidad de inmediato. Priorizamos los problemas en el siguiente orden:

1. Errores que Afectan Nuestros Productos Pagos

Los errores que impactan nuestros productos pagos siempre serán nuestra máxima prioridad. En algunos casos, solo abordaremos errores que nos afecten directamente.

2. Solicitudes de Pull de la Comunidad

Si has identificado un error y tienes una solución, por favor envía una solicitud de pull. Después de los problemas que afectan a nuestros productos, damos la siguiente prioridad más alta a estas correcciones impulsadas por la comunidad. Una vez revisada y aprobada, integraremos tu solución y acreditaremos tu contribución.

3. Soporte Financiero

Para problemas fuera de las categorías mencionadas, puedes optar por financiar su resolución. Cada problema abierto está vinculado a un formulario de pedido donde puedes contribuir financieramente. Priorizamos estos problemas según la cantidad de financiación proporcionada.

Contribuciones de la Comunidad

El código abierto prospera cuando su comunidad está activa. Incluso si no estás solucionando errores, considera contribuir a través de mejoras de código, actualizaciones de documentación, tutoriales o asistiendo a otros en los canales de la comunidad. Animamos encarecidamente a todos, como comunidad, a ayudar a apoyar el trabajo de código abierto.

Para reiterar, DefectiveCode priorizará los errores según cómo impacten nuestros productos pagos, las solicitudes de pull de la comunidad y el apoyo financiero recibido para los problemas.

Licencia - Licencia MIT

Copyright © Defective Code, LLC. Todos los derechos reservados

Por la presente se concede permiso, sin cargo, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados (el "Software"), para tratar en el Software sin restricciones, incluyendo sin limitación los derechos para usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar y/o vender copias del Software, y para permitir a las personas a quienes se les proporcione el Software hacerlo, sujeto a las siguientes condiciones:

El aviso de copyright anterior y este permiso se incluirán en todas las copias o partes sustanciales del Software.

EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DEL COPYRIGHT SERÁN RESPONSABLES POR NINGUNA RECLAMACIÓN, DAÑOS U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O DE OTRO MODO, QUE SURJA DE, FUERA O EN CONEXIÓN CON EL SOFTWARE O EL USO U OTROS TRATOS EN EL SOFTWARE.

MJML - Defective Code