【问题标题】:How to override Sylius email system如何覆盖 Sylius 电子邮件系统
【发布时间】:2014-05-13 09:03:46
【问题描述】:

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

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

但是这个过程涉及到几个服务/事件监听器,恐怕我需要覆盖所有它们(即 OrderConfirmationEmailListener.php、OrderConfirmationMailer.php、TwigSwiftMailer.php)...

是否有人对如何明确实现这一目标有很好的领导/想法?

谢谢

【问题讨论】:

    标签: php symfony swiftmailer sylius


    【解决方案1】:

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

    这就是我不看一些代码就能想到的全部内容。希望对您有所帮助。

    【讨论】:

    • 谢谢,实际上,自从我寻求帮助以来,我几乎就是这样做的!我覆盖了两个服务(实际上不需要覆盖监听器),复制粘贴原始代码,添加我的东西并设置我的 config.yml(据我所知,你可以在 config.yml 中重新定义一个同名的服务/监听器, 使用最后一个)。
    • 感谢 Andrej 的回复,对我很有帮助!
    【解决方案2】:

    我使用 zendframework2 通过 Zend\Mail\ 发送邮件

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

    【讨论】:

    • 谢谢,但我需要有关如何正确覆盖 Sylius(Symfony2 电子商务捆绑包)中涉及的代码片段的建议,以避免入侵 Sylius Bundle Core。将我的 PDF 附加到电子邮件中是很容易的部分。我原来的问题标题已更正,不是很清楚,我重新编辑了它...
    猜你喜欢
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 2016-03-10
    • 2018-08-09
    相关资源
    最近更新 更多