Download the PHP package colq2/blade-mjml without Composer
On this page you can find all versions of the php package colq2/blade-mjml. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package blade-mjml
Blade Mjml
This package is a port of mjml to laravel blade. The goal is to have a running mjml version purely in php and blade, without the need for node.
You can just use the original mjml xml as blade view.
You can now use this view in your mails:
Limitations
-
mj-include is not supported. Use
@include
instead. -
mj-html-attributes not supported yet.
-
mj-raw attribute
position="file-start"
is not supported yet. -
Inline mj-style not working yet.
- mj-accordion does not handle missing children. You need to always provide mj-accordion-text and mj-accordion-title.
Component overview
Head Components:
- [x] mj-attributes
- [x] mj-breakpoint
- [x] mj-font
- [ ] mj-html-attributes
- [x] mj-preview
- [x] mj-style
- [x] mj-title
Body Components:
- [x] mj-accordion
- [x] mj-button
- [x] mj-carousel
- [x] mj-column
- [x] mj-divider
- [x] mj-group
- [x] mj-hero
- [x] mj-image
- [x] mj-navbar
- [x] mj-raw
- [x] mj-section
- [x] mj-social
- [x] mj-spacer
- [x] mj-table
- [x] mj-text
- [x] mj-wrapper
Good to know
The original mjml implementation works differently than the blade compiler. MJML renders recursively, which means that a parent component calls the render function of all its childern and can provide a context or wrap them. The blade compiler works differently. First it compiles the blade view into a php file, then it "just" runs the php file. We cannot provide a context programmatically, because the blade compiler does not know about the context of the parent component.
(Blade do not really know that it is working with html. It does not care, it does not do any html analysis or anything like that. It is just string manipulation.)
This is the biggest challenge of this package. This is why we keep a context stack and a global context.
For example, we need to wrap the child components of a column into a table, which in mjml is done in the mj-column component.
Another challenge was to find out how many siblings a colum has. In the component we don't have any access to the parent html or whatsoever. Now this package "precompiles" the mjml and sets the siblings as an attribute.
The precompilation also changes <mj-> tp <x-mj-> so that the blade compiler can handle it correctly.
Installation
Install the package via composer:
Usage
Just put mjml template into your blade files and use the view for sending emails.
Relevant documentation for laravel and mjml:
And use the view in your mail class:
Or render it directly as a view:
Testing
Changelog
Please see CHANGELOG for more information on what has changed recently.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
- colq2
- All Contributors
License
The MIT License (MIT). Please see License File for more information.
All versions of blade-mjml with dependencies
spatie/laravel-package-tools Version ^1.16
illuminate/contracts Version ^10.0||^11.0||^12.0
illuminate/view Version ^10.0|^11.0|^12.0
illuminate/filesystem Version ^10.0|^11.0|^12.0