MJML集成到Nette框架中

v1.1.0 2019-11-09 18:58 UTC

This package is auto-updated.

Last update: 2024-09-10 06:19:59 UTC


README

Build Status Licence Latest stable PHPStan

安装

推荐通过Composer进行安装

composer require surda/mjml-nette

之后,您需要在config.neon中注册扩展

二进制渲染器

extensions:
    mjml: Surda\Mjml\DI\MjmlExtension
    mjml.renderer: Surda\Mjml\DI\MjmlBinaryRendererExtension

所有配置选项列表

mjml:
    debug: %debugMode%
    tempDir: %tempDir%/cache/latte
    templateFactory: \Surda\Mjml\TemplateFactory

mjml.renderer:
    renderer: \Surda\Mjml\Renderer\BinaryRenderer
    options:
        bin: mjml
        minify: FALSE
        validationLevel: strict
        beautify: TRUE

安装MJML

$ npm install -g mjml

API渲染器

extensions:
    mjml: Surda\Mjml\DI\MjmlExtension
    mjml.renderer: Surda\Mjml\DI\MjmlApiRendererExtension

最小配置

mjml.renderer:
    options:
        applicationId: 'application-id'
        secretKey: 'secret-key'

所有配置选项列表

mjml:
    debug: %debugMode%
    tempDir: %tempDir%/cache/latte
    templateFactory: \Surda\Mjml\TemplateFactory

mjml.renderer:
    renderer: \Surda\Mjml\Renderer\ApiRenderer
    options:
        applicationId: 'application-id'
        secretKey: 'secret-key'
        uri: 'https://api.mjml.io/v1/render'

使用方法

模板 template.mjml

<mjml>
    <mj-body>
        <mj-section>
            <mj-column>
                <mj-image width="100px" src="https://mjml.io/assets/img/logo-small.png"></mj-image>
                <mj-divider border-color="#F45E43"></mj-divider>
                <mj-text font-size="20px" color="#F45E43" font-family="helvetica">Hello {$foo}</mj-text>
            </mj-column>
        </mj-section>
    </mj-body>
</mjml>
use Surda\Mjml\MjmlTemplateFactory;

class MailSender 
{
    /** @var MjmlTemplateFactory */
    private $mjmlTemplateFactory;
    
    /**
     * @param MjmlTemplateFactory $mjmlTemplateFactory
     */
    public function __construct(MjmlTemplateFactory $mjmlTemplateFactory)
    {
        $this->mjmlTemplateFactory = $mjmlTemplateFactory;
    }
    
    public function sendEmail(): void
    {
        $template = $this->mjmlTemplateFactory->create();
        $template->setFile('/path/to/template.mjml');
        $template->setParameters(['foo' => 'World']);

        $mail = new Message;
        $mail->setHtmlBody($template);
        
        // or

        $template = $this->mjmlTemplateFactory->create();

        $mail = new Message;
        $mail->setHtmlBody($template->renderToString('/path/to/template.mjml', ['foo' => 'World'])));

        // ...
    }
}

邮件

mail

其他

仅从*.mjml模板渲染*.latte模板

use Surda\Mjml\Engine;

class Convertor 
{
    /** @var Engine */
    private $engine;
    
    /**
     * @param Engine $engine
     */
    public function __construct(Engine $engine)
    {
        $this->engine = $engine;
    }
    
    public function convert(): void
    {
        $mjmlFile = '/path/to/template.mjml';
        $latteFile = $this->engine->renderLatteFile($mjmlFile);

        // or

        $mjmlFile = '/path/to/template.mjml';
        $latteFile = '/path/to/template.latte';
        $this->engine->renderLatteFile($mjmlFile, $latteFile);
    }
}

更多详细信息请参考MJML文档