如何覆盖Sylius电子邮件系统

时间:2014-05-13 09:03:47

标签: php symfony swiftmailer sylius

我需要将PDF文件附加到Sylius的订单确认电子邮件中。

到目前为止,我做了它攻击Sylius Core Bundle:在/Sylius/Bundle/CoreBundle/Mailer/TwigSwiftMailer.php我从Twig模板和我的订单信息(使用Knp Snappy)生成PDF并将其附加到电子邮件。它工作正常,我想将它从Core Bundle中删除并将其放入我自己的捆绑包中(因此Core Bundle可以保持不变)。

但是这个过程涉及多个服务/事件监听器,我担心我需要覆盖所有这些(即OrderConfirmationEmailListener.php,OrderConfirmationMailer.php,TwigSwiftMailer.php)...

有没有人对如何实现这一目标有良好的领导/想法?

由于

2 个答案:

答案 0 :(得分:2)

听众不应该是一个大问题。您不应该覆盖它们,您应该能够附加自己的。所以,如果我是你,我会附上我自己的听众(他们的实现在你自己的包中),将原始代码与你的自定义一起复制粘贴,将它们注册为服务并将它们附加到他们可敬的来源(可能使用标签)您的服务注册文件 - 这是附加它们的常用方法。这应该允许您拥有自己的包中的所有内容,并且您应该能够从自定义代码中清除原始包。另请注意,只需将正确的类名参数更改为您自己的实现之一,即可使用服务配置文件覆盖许多核心类。

这是我能想到的所有内容,而不用看一些代码。希望它有所帮助。

答案 1 :(得分:-2)

我使用zendframework2与Zend \ Mail \

一起发送邮件

参见文档http://framework.zend.com/manual/2.2/en/modules/zend.mail.attachments.html 举个例子。