此包最新版本(2.0.1)没有提供许可证信息。

提供处理 mjml 电子邮件模板的过滤器的 Twig 扩展

2.0.1 2022-05-27 08:43 UTC

This package is auto-updated.

Last update: 2024-08-27 13:41:40 UTC


README

此包是一个 Twig 扩展,提供以下功能

  • mjml_to_html 过滤器:处理 mjml 电子邮件模板。
{% apply mjml_to_html %}
<mjml>
    <mj-body>
        <mj-section>
            <mj-column>
                <mj-text>Hello {{ username }}</mj-text>
            </mj-column>
        </mj-section>
    </mj-body>
</mjml>
{% endapply %}

由于我们有两种将 MJML 渲染为 HML 的方法,该扩展依赖于一个渲染器

  • BinaryRenderer:使用 MJML 库。您需要提供 MJML 二进制文件的位置。别忘了用 Node 包管理器安装它。
  • ApiRenderer:使用 MJML API。无需安装。您需要提供访问 API 的凭证。

感谢 MJML in PHP 库简化了 MJML 在 PHP 中的集成。阅读文章 Rendering MJML in PHP 获取更多信息。

安装

composer require qferr/mjml-twig

用法

<?php
require_once 'vendor/autoload.php';

use \Qferrer\Mjml\Renderer\ApiRenderer;
use \Qferrer\Mjml\Renderer\BinaryRenderer;
use \Qferrer\Mjml\Twig\MjmlExtension;

$loader = new \Twig\Loader\FilesystemLoader(__DIR__ . '/templates');
$twig = new \Twig\Environment($loader);

$renderer = new BinaryRenderer(__DIR__ . '/node_modules/.bin/mjml');
// $api = new \Qferrer\Mjml\Http\CurlApi('my-app-id','my-secret-key');
// $renderer = new \Qferrer\Mjml\Renderer\ApiRenderer($api);
$twig->addExtension(new MjmlExtension($renderer));

$html = $twig->render('newsletter.mjml.twig', [
    'username' => 'Quentin'
]);

现在您可以在任何 Twig 模板中使用 MJML。

Symfony 集成

将 MJML 扩展注册为服务,并使用 twig.extension 标签。

# config/services.yaml
services:
  # Qferrer\Mjml\Http\CurlApi:
  #  arguments:
  #     - '%env(MJML_APP_ID)%'
  #     - '%env(MJML_SECRET_KEY)%'

  # mjml_renderer:
  #  class: Qferrer\Mjml\Renderer\ApiRenderer
  #  arguments:
  #    - '@Qferrer\Mjml\Http\CurlApi'

  mjml_renderer:
    class: Qferrer\Mjml\Renderer\BinaryRenderer
    arguments:
      - '%kernel.project_dir%/node_modules/.bin/mjml'

  Qferrer\Mjml\Twig\MjmlExtension:
    arguments: ['@mjml_renderer']
    tags: ['twig.extension']

来源:Using MJML with Twig