是否可以将Symfony2 CMF和标准分布混合使用?

时间:2015-02-06 10:41:31

标签: symfony symfony-cmf

我们正在为我们的组织规划一个新的Intranet。有些部分就像CMS,还有一些定制的应用程序。

Symfony2 CMF发行版可以很好地构建内部网的CMS部分,但其他部分如Doctrine," normal"对于Intranet的自定义应用程序,SQL数据库等看起来更好。

因为我需要这个内部网(针对Active Directory)的通用授权和身份验证系统,所以我认为只有在应用程序上才能获得更好的结果。那么,我可以将CMF应用程序与普通应用程序混合使用,并且都使用相同的数据库(Oracle DB)吗?

3 个答案:

答案 0 :(得分:4)

是的,您可以轻松地将CMF与其他捆绑包混合使用。例如,路由允许使用来自CMF的两个路由以及"静态" yml文件中定义的路由。您还可以轻松地在PHPCR ODM旁边添加ORM。如果您在PHPCR中使用Doctrine DBAL进行存储,您甚至可以将相同的连接配置重用于ORM等。

答案 1 :(得分:2)

简而言之是的,我在自己的Symfony2项目中执行此操作。我结合了SF-SE和SF-CMF捆绑包。

事实上,使用Symfony2它非常简单(这只是选择最合适的 Bundles 的问题; SF是一个非常分离的框架,这就是为什么我不打算迁移到任何暂时的其他解决方案),但我想分享我的一些经验。实际上,要考虑如何结合两个“世界”的一个最重要的问题是:

<强>作曲者。

在一些问题之后我发现,既然Symfony CMF(在某种程度上)基于Symfony SE,而不是相反,那么最好从后者开始,因为它包含最核心的功能(尽管我也这样做了)相反的方式,而不是推荐)。所以,只需要使用SF-SE的composer.json,看看你需要的包,然后看看SF-CMF的composer.json中的差异。你应该得到最合适的捆绑包。

这些捆绑包的基本功能是:

  • MODEL - Doctrine ORM,PHPCR-ODM或两者 - 如果仍然不确定,请不要犹豫,发表评论,我将在此分享我的经验。
  • ROUTING - 这里的主要问题是您实际需要灵活的路由?如果不确定,我会使用标准SF路由器,然后可能更换它,例如还在开发阶段。
  • 不可见的CMS功能 - 诸如CreateBundle,MenuBundle或MediaBundle等捆绑包可以帮助您构建令人惊讶的快速但不太灵活的解决方案。一般来说,我最终没有使用它们中的大多数,如果使用,那么我主要采用我在自己的Bundles中实现的一些接口(以确保将来可能与其他可能使用的bundle兼容)。

除了上述内容之外,我还创建了许多Bridge Design PatternProvider Design Pattern解决方案,以便将一些捆绑包协同工作,调整功能,或者简单地解耦。

答案 2 :(得分:1)

在编程中几乎所有事情都是可能的。但请考虑CMF提供的限制(例如,路由)。 也许你应该考虑使用Sonata标准Symfony?我认为CMS页面只是你系统的一小部分,在标准symfony中实现它将占用整个项目的最小部分(和成本)。