2015-02-06 32 views
1

我们正在为我们的组织规划一个新的Intranet。有些部分就像一个CMS,并且有一些定制的应用程序。是否可以混合Symfony2 CMF和标准分布?

Symfony2 CMF发行版对于构建Intranet的CMS部分看起来很不错,但其他部分(如Doctrine,“正常”SQL数据库等)对于Intranet的定制应用程序看起来更好。

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

回答

1

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

+0

你的意思是什么限制?我不知道CMF会强加任何路由的限制。它有一个链路由器,可以使用CMS路由和配置的路由。然而,使用Sonata管理CMS页面是一个好主意。 – dbu 2015-02-07 10:22:40

+0

不要将CMS与CMF错误。 CMF是整个元系统 - 一种开发工具(CMF),而不是用户系统(CMS)。在Symfony CMF中使用的BTW路由比标准路由更灵活和更强大。 – forsberg 2016-05-07 16:07:17

4

是的,您可以轻松地将CMF与其他Bundle混合使用。例如,路由允许使用来自CMF的两个路由以及在yml文件中定义的“静态”路由。您也可以轻松地在PHPCR ODM旁添加ORM。如果您使用Doctrine DBAL存储在PHPCR中,甚至可以重复使用与ORM相同的连接配置。

+1

本指南介绍了如何在Symfony标准版内设置CMF捆绑包:http://symfony.com/doc/master/cmf/cookbook/editions/cmf_core.html – dbu 2015-02-07 10:24:10

+0

关于Oracle:jackalope-doctrine-dbal尚未尚未在oracle上进行测试。它可能需要一些工作才能使XML查询工作。或者简单地运行CMS页面的Java jackrabbit服务器。或者您可以查看SimpleCmsBundle的ORM映射。随意在相关项目上打开github问题进一步讨论,或使用邮件列表https://groups.google.com/forum/#!forum/symfony-cmf-devs – dbu 2015-02-07 10:26:02

2

简而言之是的,它是,我在我自己的Symfony2项目中这样做。我将SF-SE和SF-CMF捆绑在一起。实际上,使用Symfony2它非常简单(这只是选择最合适的Bundle; SF是一个非常分离的框架,这就是为什么我不打算迁移到任何其他解决方案的原因时刻),但我想分享一些我的经验。其实,想想如何将两个“世界”结合起来做出决定的一个最重要的问题是:

作曲家。

经过一些研究后,我发现Symfony CMF是基于Symfony SE的(在某种程度上),而不是反过来,所以最好从后者开始,因为它包含了最核心的功能(虽然我做了它也是相反的方式,而不是推荐)。所以就拿一个SF-SE的composer.json,看看你需要的捆绑包,然后看看SF-CMF的composer.json中的差异。你应该得到最合适的一套软件包。

从这些捆绑的基本功能,查找的是:

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

除了上述这些,我创造了多项Bridge Design PatternProvider Design Pattern解决方案,使一些捆绑一起工作,来调整自己的功能,或者干脆去耦的事情。

相关问题