At Symfony Live 2011 - Paris, we announced the plan to build a content management framework on top of Symfony2. Meanwhile, the Symfony2 CMF has reached a usable state.
The mission statement of the CMF is:
The Symfony CMF project makes it easier for developers to add CMS functionality to applications built with the Symfony2 PHP framework. Key development principles for the provided set of bundles are scalability, usability, documentation and testing.
The goal of the CMF is not to build yet another CMS, but to provide building blocks for content management in custom applications as well as a foundation to build general purpose content management systems like the Apostrophe or Midgard CMS. There are CMF bundles for dynamic routing based on databases, dynamic menu structures and content handling. Editing can either be done in the frontend, i.e. using createjs or in the backend with the Sonata AdminBundle. The CMF recommends but does not depend on using the PHP content repository (PHPCR) as content oriented storage abstraction layer. PHPCR provides a sort of NoSQL database that supports tree structures, references and even versioning natively. With Doctrine PHPCR ODM there is a layer on top of PHPCR that looks and feels like what Doctrione ORM offers with additional convenience features like native i18n support.
We have prepared several presentations on the CMF and its components which are available at cmf.symfony.com.
We just started releasing 1.0.0-alpha versions of these bundles. Remember that it is possible to use and extend just some bundles: Pick what you need. For an easy start, there is also the cmf-sandbox that demonstrates most of the features. The sandbox is also available online at http://cmf.liip.ch/.
To illustrate how far along we are and how empowering our core architecture is, we have asked Frederic Haddad to write down how his experience has been going from zero previous experience with the CMF to building a modern blog within a short time. He also recorded a screencast about his real-world application:
"I’m Frederic Haddad, Digital Marketing Manager at Coddict, a web development agency based in Montreal, Canada that relies on Symfony2 for most of its client projects. When we developed a custom CMS solution for a client using Symfony2, we had to put in considerable extra effort in order to implement all the required CMS features, such as versioning, custom content layout and multi-language menu generation. I heard about the CMF at last year’s ConFoo conference. It sounded interesting but I never dived into it until two weeks ago when we started a new client project (blog system). I decided to develop it using the Symfony2 CMF and was quite impressed with the potential especially thanks to the PHPCR based backend architecture. Combining this Content Repository API with the provided bundles and components gave us all the key features of a CMS: versioning, dynamic routes, more elegant and concise code, unstructured nodes, i18n, content reusability and a solid multilingual menu generation strategy. I have recorded a video to demonstrate what I’ve been able to build in just 2 weeks into learning how to use CMF."
If you go to the Symfony live conference in Paris this week, don't miss the talks about the CMF:
Lukas Kahwe Smith and David Buchmann will be happy to talk with you about the CMF. David will also be at the Hackday on saturday.
+1 for the CMF; and really looking forward for a e-commerce extension framework.
github link is broken
indeed, the link should be http://github.com/symfony-cmf/cmf-sandbox (guess i was legastenic when writing the markdown)
the links are now fixed. happy reading :-)
Seems to be geat, will have a look! :)
PS: Demo (http://cmf.liip.ch/fr) is broken too :(
@Elias, don't look forward to it, come on over to https://github.com/vespolina and help make it a reality.
Frederic, love the video! @Richard any plans to integrate Vespolina with the CMF? I think building an e-commerce application is very similar to the CMF... am I wrong?
@Jarvis, the idea is you can pick and choose which parts of the system you need. So you can add VespolinaProductBundle, VespolinaCartBundle and VespolinaCheckoutBundle to your CMS built from CMF Bundles. Those three bundles are far enough along now that with a little love, you can use them in any Symfony2 site. We do have the intent to actually support PHPCR as a backend in the future.
@vincent: the cmf.liip.ch link was not broken, but the sandbox tends to get broken when people play with it, as there are not enough checks in the admin area... it is reset every night and working again atm.
BTW for integrating Doctrine ORM and PHPCR ODM there is an interesting Bundle: https://github.com/netvlies/DoctrineBridgeBundle
Great !
the problem here is that Freddy's example is closed source :( so good for marketing but not good to follow along with how to use things. I thought the buzz was about that but i was wrong.
What's missing is a tutorial that shows how to add CMF to a Symfony2 site. There is information about the individual components out there and the demo site but the question most people will have is how do I get from a naked Symfony2 SE installation to my own little blog app using CMF?
Absolutely .. to me the focus in the coming months before we can release our 1.0 stable we need to work on documentation, the doctrine dbal PHPCR implementation and more admin tools.
The point of this blog post is to show that:
Great news, I can't wait to test it ;)
Can't wait to hear about Symfony2-CMF and PHPCR at #symfony_live!
Seems to be great !
looks really promising. i hope the documentation will be good too, because there are lots of new concepts involved,
Really great news !