botnyx / swift-twig
SwiftMailer和Twig之间的桥梁
v1.1
2017-11-29 23:37 UTC
Requires
- php: >=5.3.3
- swiftmailer/swiftmailer: >=4.2.0,~5.0,~6.0
- symfony/dom-crawler: ~2.3|~3.0
- twig/twig: ~1.23|~2.0
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。模板期望三个块(subject、body_html、body_text)。如果在body_html块中找到具有类inline-image的任何本地图像(即src属性以单个正斜杠/开头)的图像,它将在电子邮件中内联,以便某些电子邮件客户端更容易渲染图像。
此助手作为服务wmc.swiftmailer_twig提供。要使用它,使用这三个参数调用方法populateMessage
- 的
\Swift_Message - 模板名称
- 模板的数据数组
此助手依赖于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 %}