botnyx/swift-twig

SwiftMailer和Twig之间的桥梁

安装: 18

依赖者: 1

建议者: 0

安全性: 0

星标: 0

关注者: 1

分叉: 4

类型:symfony-bundle

v1.1 2017-11-29 23:37 UTC

This package is auto-updated.

Last update: 2024-09-06 13:49:21 UTC


README

此捆绑包提供了一个简单的方法,使用Twig为SwiftMailer库创建电子邮件模板。

此助手灵感来自 FOSUB TwigSwiftMailer

如果您正在使用FOS用户捆绑包,我们还提供了一种邮件服务替换,以支持我们的附加功能。

安装

使用Symfony

安装此扩展的最佳方式是通过composer

首先,需要此捆绑包

composer require wemakecustom/swiftmailer-twig-bundle "^1.0"

其次,启用它

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new WMC\SwiftmailerTwigBundle\WMCSwiftmailerTwigBundle(),
        // ...
    );
}

第三,最后,配置web_directory参数以使用它

# config.yml

parameters:
    web_directory: %kernel.root_dir%/../web

完成。

FOS用户捆绑包集成

# config.yml

fos_user:
    service:
        mailer: wmc.swiftmailer_twig.fosub

使用纯Swiftmailer/Twig

安装此扩展的最佳方式是通过composer

首先,需要此捆绑包

composer require wemakecustom/swiftmailer-twig-bundle "^1.0"

然后将命名策略提供给doctrine的配置

<?php

$swiftMailerTemplateHelper = new \WMC\SwiftmailerTwigBundle\TwigSwiftHelper($twig, $web_directory);

用法

它允许使用Twig模板填充Swift_Message。模板期望三个块(subjectbody_htmlbody_text)。如果在body_html块中找到具有类inline-image的任何本地图像(即src属性以单个正斜杠/开头)的图像,它将在电子邮件中内联,以便某些电子邮件客户端更容易渲染图像。

此助手作为服务wmc.swiftmailer_twig提供。要使用它,使用这三个参数调用方法populateMessage

  1. \Swift_Message
  2. 模板名称
  3. 模板的数据数组

此助手依赖于Symfony的组件DomCrawler、Twig和SwiftMailer。

示例

$data = [];

// ...

$data['recipient'] = ['name' => 'Jonh Smith', 'email' => 'recipient@example.com'];

$message = $mailer->createMessage()->setTo(['recipient@example.com' => 'John Smith']);
$swiftMailerTemplateHelper->populateMessage($message, 'AppBundle:Mail:my_email.mail.twig', $data);
$mailer->send($message);
{# my_email.mail.twig #}

{% block subject -%}
   My email Subject
{%- endblock %}

{% block body_text %}
    Hello {{ recipient.name }},

    {# ... Awesome plain text email ... #}

    Best Regards,
    Keep being awesome!
{% endblock %}

{% block body_html %}
    <h3>Hello <strong>{{ recipient.name }}</strong>,</h3>

    <p>
         {# ... Awesome HTML email ... #}
    </p>

    <p>
        Best Regards,<br />
        <em>Keep being awesome!</em>
    </p>
{% endblock %}