【问题标题】:New symfony bundle, when新的 symfony 包,什么时候
【发布时间】:2014-05-21 18:01:11
【问题描述】:

在我的 symfony 应用程序上,是时候添加邮件功能了。我一直都知道,一些新功能可以合理地放入它自己的捆绑包中。现在我想添加一些邮件功能,以便用户可以检查一些选项,然后将项目发送给朋友。

提前考虑,我可能还会在同一个应用程序的另一个捆绑包中使用该功能,这是网站的不同部分。

所以我在想,我可能想把一个电子邮件控制器放在它自己的包中,但我知道 swiftmailer 包已经在这样做,我将使用它。

所以最后我认为它可能只需要几行代码,这可能最好放在我需要电子邮件功能的网站特定部分的控制器上。

现在是我想将其制作为自己的捆绑包,用于电子邮件正文的树枝模板的主要原因。我希望这些模板在我的其他包中晃来晃去吗?我想这是有道理的。

有什么建议吗?

【问题讨论】:

    标签: symfony bundle swiftmailer


    【解决方案1】:

    仅仅为几行代码创建一个包看起来有点矫枉过正。

    对于您的 twig 模板,您可以将共享模板部分放在 app/Resources/views 中,该部分为您的所有应用程序共享。并将特定领域的模板放入特定领域的捆绑包中。 http://symfony.com/doc/current/book/templating.html#template-naming-locations

    无论您的电子邮件逻辑代码应该在包装 swift mailer 的服务中,如果您需要切换邮件策略,例如使用 HTTP API 发送邮件,您只需要更改此服务,而不是所有控制器。

    如果你有一些代码要在你的包之间共享,你是否应该有一个 {App|Main|Core|...}Bundle 包含你所有的“单一”服务,如果需要,可以稍后在他们自己的包中移动.

    无论如何,他们对您的全球问题有很多方法:

    • 您可以使用包含所有业务逻辑的单个捆绑包,并将您的技术/通用内容外部化/解耦到可以在您的应用之间共享的捆绑包中

    • 您可以采用相反的方法,一个包用于技术内容,多个包用于您的业务逻辑,可能更难保持低耦合

    • 或两者兼而有之

    在我看来,第一种方法适用于简单的应用程序,而第二种和第三种方法可以更面向领域,适用于更大的应用程序。最重要的可能是保持一致。

    【讨论】:

    • 是的,我已经有一个核心包,用于服务等。我也依赖服务,我需要更习惯使用依赖注入,并且认为这是一个更好的方法也适合它。谢谢你的建议。我喜欢将全局电子邮件正文模板放在应用程序/资源中的想法。对于这个特定的应用程序来说,一致性有时有点困难,因为它是我使用 symfony2 fw 的最远距离,所以我喜欢为各种事情提供不同的示例,所以当它成为 winnign 解决方案时我可以参考它们。哦,好吧,一切都会在 ned 中得到清理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 2014-02-07
    相关资源
    最近更新 更多