Sorry, you need to enable JavaScript to visit this website.
Skip to main content

Symfony Station Communiqué - 1 April 2022

A white paragraph.

 


 

Symfony Station Logo

symfony logo

 

 


 

Welcome to this week's Symfony Station Communiqué. It's your weekly review of the most essential news in the Symfony and PHP development communities.

Again, we cover tech aspects of the war crimes going on in Ukraine and how you can help.

Take your time and enjoy the items most valuable to you.

Thanks to Javier Eguiluz and Symfony for sharing our last communiqué in their Week of Symfony.

Please note that links will open in a new browser window. My opinions will be in bold.

 

Symfony

 

As always, we will start with the official news from Symfony.

Highlight -> “This week, Symfony development activity focused on fixing bugs, especially on the HttpClient component, and polishing the new features of the upcoming Symfony 6.1 version, such as the new local switcher. Meanwhile, SymfonyLive Paris 2022 conference is coming in just two weeks and SymfonyCon Disneyland Paris 2022 conference announced the last days of its early-bird discounts.

A Week of Symfony #795 (21-27 March 2022)

 

They also say:

See you next week at SymfonyLive Paris 2022 conference

 

SymfonyCasts continues their free look at Symfony 6 and the Easy Admin paid courses.

This week on SymfonyCasts

 

Platform.sh announced:

We’re changing the way development environment URLs are generated

 

Featured Item

 

Feature Item graphic

 

Thoughtworks notes a lack of thought by some. “We don't see teams making that trade-off analysis, blindly accepting the complexity of SPAs by default even when the business needs don't justify it. Indeed, we've started to notice that many newer developers aren't even aware of an alternative approach, as they've spent their entire career in a framework like React. We believe that many websites will benefit from the simplicity of server-side logic, and we're encouraged by techniques like Hotwire that help close the gap on user experience.”

 

SPA by default

 

Symfony and StimulusUX people.

 

This Week

 

I know I’ve shared many of these, but this one is in Spanish.

Laravel vs Symfony, ¿cuál elegir?

 

Les-Tilleuls.coop says in French, “we're fond of DDD tactical patterns! In this structural approach, we must divide and prioritize our code into three main layers: Infrastructure, Domain & Application. However, the same idea can be expressed and defined in several areas, for example, if I design a forum module as well as a real-time discussion module. In both domains, I will have a public template whose class is named 'Message', each using its own namespace: 'App\Domain\Forum\Model\Message' and 'App\Domain\Chat\Model\Message'.”

How do I make resources with the same name coexist from two different domains with API Platform?

 

Bernard NG thinks “it is preferable to use XML mapping when doing DDD.”

DDD With Symfony : How to configure Doctrine XML Mapping

 

Matthias Noback had a different take back in May of 2020.

DDD and your database

 

Michał Romańczuk has a very detailed case study of converting a nightmare legacy project to Symfony by using the Strangler Pattern.

Strangler Pattern in practice

 

Hatem Ben Yacoub has a review of a TYPO3 handbook.

The TYPO3 Guidebook reviewed. Understand and Use TYPO3 CMS.

 

You can learn more about Symfony-based CMSs like TYPO3 and Drupal here.

 

Specbee writes “Data. Files. They’re what make up your website. And how you store and serve them can make all the difference for user experience. Obviously, cloud storage has changed the way we look at and manage data. Today, we’re going to walk through one of the more popular options for Drupal websites. S3 (Simple Storage Service) is the cloud storage service provided by AWS (Amazon Web Services) and it has been providing durable, secure, and scalable cloud storage for many industries.”

How to store and serve files from Amazon S3 on your Drupal website

 

Louis Nagtegaal shows us how to handle:

Drupal Migrations in ddev

 

Timeless

Inspector logo

Sponsored Article

 

We published our third sponsored article on Symfony Station exploring how to Implement Code Execution Monitoring for your Symfony apps via Inspector. Like all our articles it is now available via audio.

 

How to Implement Code Execution Monitoring for your Symfony apps via Inspector

 

All sponsored articles are for products we have vetted and stand behind. We either use them or would do so if they applied to the Symfony Station site.

 

PHP logo

PHP

 

This week

 

The PHP Foundation published its March Newsletter.

PHP Foundation Newsletter

 

And PHP Architect published its April Issue.

php[architect] April 2022

 

Jonathan Bossenger writes “Ever since I discovered how to configure PhpStorm with Xdebug for debugging, it’s been my go-to solution for hunting down difficult to reproduce bugs. What I didn’t know until very recently was that it’s also possible to debug JavaScript using the same setup, which blew my mind!”

Debugging React, JavaScript, and PHP at the Same Time With PhpStorm

 

Bobby Jack notes “Bitmasks are as old as computing itself and, admittedly, were more useful in the days of memory scarcity and low-level programming. But there’s nothing to stop you from using them today, when appropriate. PHP makes use of bitmasks in many of its built-in functions.”

How to use bitmasks in PHP

 

Amplitudo asks:

Why are we using sessions in PHP?

 

Italo Baeza Cabrera writes “PHPUnit is a very complete testing suite, and with Mockery is even better. Most of the assertions are covered: data in arrays, strings inside strings, classes instances, and so on. Even so, PHPUnit is not perfect, and for your project, you may need a “custom” assertion. For example, I just stumbled upon the need to create a simple assertion to check if a class extending other contains a given variable set of methods.”

PHPUnit: Making your own assertion

 

Thomas Dutrion says, “Things in computing science are sometimes complex… And I consider myself a fervent proponent of self-descriptive code to limit complexity. I won’t get back on why you should unit test at least some of your code, nor will I spend time teaching how to write unit tests in this article. I will consider that all of you are ok with these concepts and implementations. Examples will be based on a PHPUnit implementation.”

Unit tests and data providers, the readable way

 

Code and Deploy shows us how to:

Sanitize Input using PHP

 

Hicham Ben Kachoud has a quick look at the S in SOLID programming.

SRP: Single Responsibility Principle

He also examines the L.

LSP: Liskov Substitution Principle

 

And regarding SOLID’s D, Guy Erez explains:

Dependency Inversion vs. Dependency Injection

This is very useful.

 

Joseph Bielawski has “A short explanation of the Bus Factor and how to hold its score at safe levels.”

What happens if your development team is hit by a bus?

 

Last Week

 

Dimitrios Lytras says, “While I wasn't paying attention, PHP got quite good.”

Modern PHP

 

Brent writes “Generics in PHP. I know I’d want them. And I know a lot of developers who agree. On the other hand, there is a group of PHP programmers, maybe even larger, that say they don’t know what generics are, or why they should care. I’m going to do a series on this blog about generics and PHP. We’ll start from the beginning, but quickly work our way to the more complex topics. We’ll talk about what generics are, why PHP doesn’t support them, and what’s possible in the future.”

Generics in PHP: The basics

 

Golems notes “What does $this mean in PHP and similar questions are increasingly appearing on the Internet. StackOverflow is also bombarded with questions about this variable. Let's find out everything related to dynamic PHP access object property with $this and break it down with examples.”

Dynamically Access PHP Object Properties with $This

 

If you ever need an extensive PHP explainer article to share, Visualwebz has you covered.

A Bit About PHP

Code logo

Other

 

Please visit our Support Ukraine page to learn how you can help kick Russia out of Ukraine (eventually).

 

The cyber response to Russia’s War Crimes

 

The Next Web reports “For weeks, Russia’s military assault on Ukraine has been complemented by full-fledged information warfare. The Kremlin has propagandized Russian state media, and is trying to control the narrative online too. We’ve seen a bombardment of “imposter content” circulating – including fake news reports and deep-fake videos – while Ukrainians and the rest of the world have scrambled to find ways to tell the real story of the invasion. The instant messaging app Telegram has surfaced as one of the most important channels through which to do so. But what is it about Telegram that has millions flocking to it amid the chaos?”

Why Ukrainians are turning to Telegram during the war

 

The New Zealand Herald reports “Ukraine has claimed to have uncovered the identities of more than 600 Russian spies in what has been described as a significant blow to President Vladimir Putin's espionage efforts. Officials in the war-torn country allege the unmasked individuals were carrying out "criminal" activity across Europe. The Main Intelligence Directorate of Ukraine released a slew of personal details of hundreds of alleged agents working for the FSB.”

600 Russian spies busted in huge blow to Moscow's espionage war

 

Daniel Johnson reveals:

The real reason Ukraine's information war is so successful

 

This was long overdue.

Kaspersky Named First Russian Company on Security Risk List

 

The Washington Post writes “As the U.S.-funded broadcaster is forced to shut most of its Russian operations, its Web traffic indicates that Russian people are eagerly consuming its stories.”

The Kremlin tries to stifle Radio Free Europe — and its audience surges

 

Lawfare.org reports “Companies like Meta, Google, Apple, Microsoft, Twitter and even TikTok increasingly recognize that they cannot afford to sit geopolitical crises out. The war in Ukraine is the most dramatic instance yet of platforms’ geopolitical turn—their growing engagement with security and geopolitical challenges incidental to their business operations. Platforms came a lot more prepared for the war in Ukraine compared to previous major geopolitical inflection points. They have coordinated their actions with Western governments and other international actors leading the charge against Russia.”

Platforms at War

 

The Evil Empire Strikes Back

 

Russian hackers appear to be more competent than their generals and soldiers.

Russian military reportedly hacked into European satellites at start of Ukraine war

 

ZDNet reports that:

Multiple hacking groups are using the war in Ukraine as a lure in phishing attempts

 

The Intercept reports “Internal chat logs leaked from the notorious Russian ransomware gang Conti reveal unfiltered conversations between ultranationalist hackers in which they repeat Russian President Vladimir Putin’s conspiratorial lies about Ukraine, discuss the impact of early Western sanctions against their country, and make antisemitic comments about Ukraine’s Jewish president.”

Leaked Chats Show Russian Ransomware Gang Discussing Putin’s Invasion of Ukraine

 

Cybersecurity

 

Richard Forno writes “I and other researchers at the University of Maryland, Baltimore County have studied the cybersecurity preparedness of the United States over 90,000 local government entities. As part of our analysis, working with the International City/County Management Association, we polled local government chief security officers about their cybersecurity preparedness. The results are both expected and alarming.”

Hackers are targeting US local governments — and it’s time to fight back

 

Michael Usiagwu shares “The recent increase in the severity and sophistication of cyberattacks in recent years may just signal an essential, albeit overdue, turning point in cybersecurity. The clamor by security practitioners concerning the securing of cloud technology by use of technology like Zero Trust by enterprises and organizations has never been louder, and it’s not hard to see why.”

Zero Trust — The Silver Lining to Cloud Cyber Attacks

 

GitHub notes “Securing your projects is no easy task, but end-to-end supply chain security is more top of mind than ever. We’ve seen bad actors expand their focus to taking over user accounts, commonly used dependencies, and also build systems. Defending against these attacks is hard because there’s no one thing you can do to protect your project end-to-end.

To help you defend against these attacks, we created new guides in our Docs that cover how to get started securing your end-to-end supply chain.”

How to secure your end-to-end supply chain on GitHub

 

More

 

Rachel Lawson @rachel_norfolk says on Twitter, “If you are mining bitcoin in Europe then you are using up energy that could otherwise be heating people’s homes. You are directly helping Putin’s invasion of Ukraine by making it harder to apply sanctions on energy coming from Russia.”

 

On a related note, The Guardian reports a “campaign, called Change the Code Not the Climate and coordinated by Environmental Working Group is calling on bitcoin to change the way bitcoins are mined in order to tackle its outsized carbon footprint. The software code that bitcoin uses – known as “proof of work” – requires the use of massive computer arrays to validate and secure transactions. Rival cryptocurrency Etherium is shifting to another system – “proof of stake” – that it believes will reduce its energy use by 99%.

Climate groups say a change in coding can reduce bitcoin energy consumption by 99%

 

Wired opines “A string of “sabotage” incidents in open source software is reigniting discussions of how to safeguard projects that underpin digital platforms and networks around the world. Many of the recent incidents have been dubbed “protestware” because they relate to open source developers making code changes to express support for Ukraine amidst Russia's invasion and ongoing attack of the country.”

The Fragile Open Source Ecosystem Isn’t Ready for ‘Protestware’

 

Docker announced Extensions.

Docker Extensions Preview

 

GitHub shows us how to:

Save time with partial re-runs in GitHub Actions

 

They also announced CoPilot Labs. A VS Code extension for experimental applications of Copilot.

GitHub Copilot Labs

 

Jonas Ulrich writes “We're still wasting massive amounts of valuable development cycles in the frontend world by working in silos, or by to at least some extent reinventing the wheel for every project. Results suffer in the process, impacting real-world results for users and content creators alike. How did we get here, and what could a way forward look like? How we've already come a long way, and why still (so far) even Jamstack hasn't been the sole answer, either...”

Unlocking the frontend - a call for standardizing component APIs pt.1

 

UX Tools notes “The term “user error” implies that it’s the user’s fault when they do something wrong. But in the vast majority of cases, the fault actually rests with the designer for having created an interface that is confusing or makes it too easy for the user to make a mistake. The solution to user errors is not to blame the user or try to train the mistakes out of them. The solution is to redesign the product in such a way that it prevents errors from occurring in the first place.’

How Designers Can Prevent User Errors

 

Louis Lazarus says, “there is a whole bunch of lesser-used attributes that I was sure I’d forgotten about, and probably a whole bunch of attributes I didn’t even know existed. This post is the result of my research, and I hope you’ll find some of these useful to you, as you build HTML pages in the coming months.”

Those HTML Attributes You Never Use

 

That's it for this week. Thanks for making it to the end of another edition. I look forward to sharing next week's Symfony and PHP news with you on Friday.

Please share this post. :) Also, be sure to join our newsletter list at the bottom of our site’s pages. Joining gets you each week's communiqué in your inbox (a day early). And follow us on Twitter at @symfonfystation.

Do you own or work for an organization that would be interested in our promotion opportunities? If so, please contact us. We’re in our infancy so it’s extra economical. ;)

More importantly, if you are a Ukrainian company with coding-related products, we can provide you with free promotion on our Support Ukraine page. Or if you know of one, get in touch.

Keep going Symfonistas!

 

Visit our Communiqué Library

You can find a vast array of curated evergreen content.

 

Author

Reuben Walker photo

 

Reuben Walker

Founder
Symfony Station

 

 

 


 

Exploring the 17 Content Management Systems of Symfony Reuben Walker Tue, 01/11/2022 - 14:27

 


 

 


 

Symfony Station Logo

symfony logo

 

 


 

Exploring the Content Management Systems of Symfony graphic

 

Are you looking for a CMS built with Symfony?

 

Have you ever wondered which CMSs are built with Symfony? Well, probably not, but if you have this reference article shows which ones are and provides their relevant details.

Technically, the Content Management Systems covered in this article aren't of Symfony but built with its components to various extents.

Some of them have the capability to incorporate Symfony Bundles. For example, it's likely with eZ Platform/Ibexa, Sulu, Bolt, Contao, Fork, and Kunstmaan. Most are customizable.

Our exploration is for those developers or site owners evaluating CMSs. However, it will be particularly handy for those searching for one tightly tied to the Symfony framework. I recommend bookmarking this article as a reference while you hunt for the CMS for your project.

If you're unsure how to evaluate a CMS, you can benefit from reading this case study of what we did when building Symfony Station. It's interesting, to say the least.

This article is not as entertaining, but it should prove helpful.

 

What will be covered

Each CMS overview will provide:

  • A description from Symfony of the CMS
  • A list of Symfony Components the CMS uses
  • A few points from the CMS about its advantages
  • A link to the CMS's site for more information

If you want information on a specific CMS, click the link below to go to its section. Please take advantage of our back-to-the-top arrow as needed for comparing two CMSs at opposite ends of the list.

Said list of Content Management Systems built with Symfony Components is extensive and includes:

 

Wow. That's a lot, so I may update this article to further explore the CMSs. Or I may write individual pieces in the future.

Again, I will provide a quick summary of each CMS as described by Symfony and their benefits as touted by the Content Management Systems themselves. This info will be in quotation marks.

I made some adjustments to the sales pitches for grammar and readability.  
 

Drupal

Drupal logo

Let's start with Drupal, which is the CMS Symfony Station is built upon.  

"Drupal is an open-source content management platform powering millions of websites and applications. It's built, used, and supported by an active and diverse community worldwide. Drupal is open-source software maintained and developed by a community of 1,000,000+ users and developers. It's distributed under the terms of the GNU General Public License (or "GPL"), which means anyone is free to download it and share it with others."  

 

Symfony components used in it include:
  • ClassLoader
  • Console
  • DependencyInjection
  • EventDispatcher
  • HttpFoundation
  • HttpKernel
  • Polyfill Iconv
  • Process
  • Routing
  • Serializer
  • Translation
  • Validator
  • Yaml

 

It also incorporates Twig in its core.  

As Drupal is the most well-known of the "Symfony CMSs", I won't go into it a great deal. The lower part of our about page has the details of how we use it.  

The official site of Drupal  
 

Joomla

Joomla logo

Joomla is the second most well-known "Symfony CMS."  

"Joomla is an award-winning content management system (CMS), which enables you to build Web sites and robust online applications. Many aspects, including its ease-of-use and extensibility, have made Joomla the most popular website software available. Best of all, Joomla is an open-source solution that is freely available to everyone."  

 

The Symfony components it uses are:
  • Asset
  • Cache
  • Console
  • ErrorHandler
  • HttpFoundation
  • Ldap
  • OptionsResolver
  • PHPUnit Bridge
  • Polyfill PHP 5.5
  • Polyfill PHP 7.0
  • Polyfill PHP 7.2
  • Polyfill PHP 7.3
  • Polyfill Util
  • Process
  • WebLink
  • Yaml

 

I am going to quote from Joomla now, "Joomla! is used worldwide to power millions of websites of all shapes and sizes.  

Some companies and organizations have requirements beyond what is available in the Joomla! Core package. In those cases, Joomla's powerful application framework makes it easy for developers to create sophisticated add-ons that extend the power of Joomla into virtually unlimited directions.  

The core Joomla! Framework enables developers to quickly and easily build:

  • Inventory control systems
  • Data reporting tools
  • Application bridges
  • Custom product catalogs
  • Integrated e-commerce systems
  • Complex business directories
  • Reservation systems
  • Communication tools

Since Joomla! is based on PHP and MySQL, you're building powerful applications on an open platform anyone can use, share, and support."  

The official site of Joomla  
 

eZ Platform/Ibexa

eZ Platform logo

"eZ Platform, a pure full-stack Symfony CMS as of version 2, is the foundation for eZ Platform Enterprise. It is a Content Management System built for business-critical digital applications that need to be extensively quality-assured, stable, and fully-featured with additional value-added functionalities, support, and maintenance services."  

 

Symfony components used by this CMS include:
  • Asset
  • Cache
  • Console
  • Dotenv
  • ExpressionLanguage
  • Form
  • Polyfill Ctype
  • Polyfill Iconv
  • Polyfill PHP 5.6
  • Polyfill PHP 7.0
  • Polyfill PHP 7.1
  • Process
  • Translation
  • Validator
  • WebLink
  • Yaml

 

Ibexa says: "Ibexa DXP enables developers to design and develop websites, web applications, and complex eCommerce stores. Built on the standard Symfony PHP framework, developers can leverage existing knowledge and integrate custom functionality alongside core features.  

At the core of Ibexa DXP are extensibility and connectivity. We provide a comprehensive suite of APIs (GraphQL, REST, and PHP), and our products are built on modern Open Source technologies.  

Our core technology, Ibexa Open-Source is available under the GPL."  

The official site of eZ Platform/Ibexa  
 

Grav

Grav logo

Grav aims for a simple developer experience and has the best logo of the Symfony CMSs. ;) I considered Grav for Symfony Station but did not want it to be a static site.  

"Grav is a Modern, Fast, Simple and Flexible flat-file CMS. While Grav is intentionally minimal, the extensive plugin architecture allows it to adapt to almost any task. Powerful Twig templating ensures that development is only limited by your imagination. Sophisticated caching mechanisms mean that Grav is scary fast and can scale more than other flat-file CMS systems. Utilizing Markdown for content creation and YAML for configuration ensures it is always easy to use and configure. Being flat-file based means a Grav site is quick to install, simple to migrate, and a breeze to version."  

 

It uses these Symfony components:
  • Console
  • Contracts
  • EventDispatcher
  • Finder
  • HttpClient
  • Polyfill Iconv
  • Polyfill Mbstring
  • Polyfill PHP 7.2
  • Polyfill PHP 7.3
  • Polyfill PHP 7.4
  • Polyfill PHP 8.0
  • Polyfill PHP 8.1
  • Process
  • VarDumper
  • Yaml

 

Grav says: "Grav is a Fast, Simple, and Flexible file-based Web-platform. There is Zero installation required. Just extract the ZIP archive, and you are already up and running. Although Grav follows principles similar to other flat-file CMS platforms, it has a different design philosophy than most.  

The underlying architecture of Grav is built using well-established and best-in-class technologies. This approach ensures that Grav is simple to use and easy to extend. 

 

It uses these Symfony components:
  • Twig Templating: for comprehensive control of the user interface
  • Markdown: for easy content creation
  • YAML: for simple configuration
  • Parsedown: for fast Markdown and Markdown Extra support
  • Doctrine Cache: for performance
  • Pimple Dependency Injection Container: for extensibility and maintainability
  • Symfony Event Dispatcher: for plugin event handling
  • Symfony Console: for CLI interface
  • Gregwar Image Library: for dynamic image manipulation

 

It focuses primarily on your content and turns your content structure into a navigable site. The underpinnings of Grav are simple, yet via extensive events, you have complete control over every step in the Grav workflow."  

The official site of Grav  
 

Symfony CMF

Symfony CMS logo

As you would suspect, this is pure Symfony. I considered it for Symfony Station, but I am not proficient enough at Symfony at the moment. Plus, it is no longer supported.  

"The Symfony CMF project makes it easier for developers to add CMS functionality to applications built with the Symfony PHP framework. Key development principles for the provided set of bundles are scalability, usability, documentation, and testing."  

 

Components used by this project include:
  • Asset
  • BrowserKit
  • Cache
  • Config
  • Console
  • Contracts
  • CssSelector
  • DependencyInjection
  • DomCrawler
  • Dotenv
  • ErrorHandler
  • EventDispatcher
  • ExpressionLanguage
  • Filesystem
  • Finder
  • Form
  • HttpClient
  • HttpFoundation
  • HttpKernel
  • Intl
  • Ldap
  • Lock
  • Mailer
  • Messenger
  • Mime
  • Notifier
  • OptionsResolver
  • PasswordHasher
  • PHPUnit Bridge
  • Polyfill Ctype
  • Polyfill Intl Grapheme
  • Polyfill Intl ICU
  • Polyfill Intl IDN
  • Polyfill Intl Normalizer
  • Polyfill Mbstring
  • Polyfill PHP 8.1
  • Polyfill UUID
  • Process
  • PropertyAccess
  • PropertyInfo
  • RateLimiter
  • Routing
  • Runtime
  • Guard
  • Semaphore
  • Serializer
  • Stopwatch
  • String
  • Templating
  • Translation
  • Uid
  • Validator
  • VarDumper
  • VarExporter
  • WebLink
  • Workflow
  • Yaml

 

The GitHub repository states, "Nowadays only providing the CMF routing. The repositories of the other components are archived and marked as abandoned but will stay available."  

If you're still interested, you can find out more about Symfony CMF here.  

 

TYPO 3

Typo 3 logo

I don't know much about this CMS, although I did explore and consider it for Symfony Station.  

"TYPO3 is an open-source PHP-based web content management system released under the GNU GPL."  

 

TYPO3 uses these Symfony components:
  • Config
  • Console
  • DependencyInjection
  • ExpressionLanguage
  • Filesystem
  • Finder
  • HttpFoundation
  • Mailer
  • Mime
  • OptionsResolver
  • Polyfill Intl ICU
  • Polyfill Intl IDN
  • Polyfill Intl Normalizer
  • Polyfill Mbstring
  • Polyfill PHP 8.0
  • Polyfill PHP 8.1
  • PropertyAccess
  • PropertyInfo
  • RateLimiter
  • Routing
  • VarDumper
  • Yaml

 

According to their site: "TYPO3 is an easy-to-use, flexible, professional CMS and open source project offering services and solutions for the whole team across industries, organization sizes, and use cases.  

Powered by an enterprise open-source CMS, and backed by a vibrant professional community and a commercial ecosystem — TYPO3 helps organizations connect with customers through rich digital experiences."  

TYPO3 makes it simple to partner with brands you trust to incorporate essential processes and tech. Integrate digital asset management, e-commerce, translation services, marketing automation, analytics, and more seamlessly into your TYPO3 project."  

The official site of TYPO3  
 

Sulu

Sulu logo

I strongly considered using Sulu for Symfony Station as it's built with Symfony. In addition, it has a simple and attractive backend dashboard. However, it's best suited for headless applications, and I'm not quite there yet as a developer.  

"Sulu is a content management platform based on Symfony made for businesses. It's a flexible CMS to create and manage enterprise multi-sites and a reliable development environment for high-performance apps. With powerful features for developers and a simple UI for editors, it's the ideal engine for state-of-the-art business websites and web-based software."  

Symfony components used by Sulu include:

Symfony components used by Sulu include:
  • Asset
  • BrowserKit
  • Cache
  • Config
  • Console
  • CssSelector
  • Debug
  • DependencyInjection
  • DomCrawler
  • Dotenv
  • EventDispatcher
  • ExpressionLanguage
  • Filesystem
  • Finder
  • Form
  • HttpClient
  • HttpFoundation
  • HttpKernel
  • Intl
  • Mime
  • OptionsResolver
  • PHPUnit Bridge
  • Polyfill Mbstring
  • Polyfill PHP 7.2
  • Process
  • PropertyAccess
  • Routing
  • Stopwatch
  • String
  • Translation
  • Validator
  • VarDumper
  • Yaml

 

Sulu states: "Sulu is built with Symfony, a highly flexible and powerful PHP framework, and many developers already work with it. But creating your own content management system in Symfony is very complex — we should know! — because there are many details to address.  

If you’re a Symfony developer, you probably don’t want to build, test, debug, and maintain all this yourself. Why reinvent the wheel? By building on top of Symfony instead of establishing its own coding standards and conventions, Sulu works with the grain of many developers."  

The official site for Sulu  
 

Bolt

Bolt logo

I like Bolt, and it was one of my top three options for this website.  

"Bolt is a tool for Content Management, which strives to be as simple and straightforward as possible. It is quick to set up, easy to configure, uses elegant templates, and above all: It's a joy to use. Bolt is created using modern open-source libraries and is best suited to build sites in HTML5 with modern markup."  

 

Bolt uses these Symfony components:
  • Asset
  • BrowserKit
  • Config
  • Console
  • Debug
  • EventDispatcher
  • Filesystem
  • Finder
  • Form
  • HttpFoundation
  • HttpKernel
  • Intl
  • OptionsResolver
  • PHPUnit Bridge
  • Process
  • PropertyAccess
  • Routing
  • Security
  • Stopwatch
  • Translation
  • Validator
  • VarDumper
  • Yaml

 

"Bolt is a Symfony application, and it shows in many ways. If you're familiar with Symfony, you'll immediately recognize the project structure and how things work.  

That's not limited to the core of Bolt itself, though. Projects you build on top of Bolt, as well as extensions for Bolt, benefit from the Symfony underpinnings."  

The official site for Bolt  
 

Pagekit

Pagekit logo

Pagekit is almost like a CMS starter kit. It's designed to be built upon.  

"It's a modular and lightweight CMS built from the ground up with modern architecture in mind. It serves as a web application framework and provides an excellent platform for theme and extension developers."  

 

Symfony components used by Pagekit:
  • Debug
  • Finder
  • HttpFoundation
  • Routing
  • Stopwatch
  • Templating
  • Translation

 

"Pagekit is an Open Source project founded by YOOtheme. We're passionate about creating a modular, extendable and lightweight CMS and bringing the fun back into content management. Pagekit is hosted on GitHub and open for everyone to contribute."  

The official site for Pagekit  
 

Fork CMS

Fork CMS logo

Fork has the 2nd best logo. ;)

"Fork CMS is dedicated to creating a user-friendly environment to build, monitor, and update your website. We pride ourselves in being the Content Management System of choice for beginners and professionals. We combine this grand vision with the latest technological innovations to allow developers and designers to build kick-ass websites."  

Fork uses these Symfony components:

Fork uses these Symfony components:
  • Asset
  • BrowserKit
  • Cache
  • Config
  • Console
  • Contracts
  • CssSelector
  • DependencyInjection
  • DomCrawler
  • Dotenv
  • ErrorHandler
  • EventDispatcher
  • ExpressionLanguage
  • Filesystem
  • Finder
  • Form
  • HttpClient
  • HttpFoundation
  • HttpKernel
  • Intl
  • Ldap
  • Lock
  • Mailer
  • Messenger
  • Mime
  • Notifier
  • OptionsResolver
  • PasswordHasher
  • PHPUnit Bridge
  • Polyfill Ctype
  • Polyfill Intl Grapheme
  • Polyfill Intl ICU
  • Polyfill Intl IDN
  • Polyfill Intl Normalizer
  • Polyfill Mbstring
  • Polyfill PHP 8.1
  • Polyfill UUID
  • Process
  • PropertyAccess
  • PropertyInfo
  • RateLimiter
  • Routing
  • Runtime
  • Guard
  • Semaphore
  • Serializer
  • Stopwatch
  • String
  • Templating
  • Translation
  • Uid
  • Validator
  • VarDumper
  • VarExporter
  • WebLink
  • Workflow
  • Yaml

 

Fork says "Fork CMS is extensible via apps. And "Fork CMS is jam-packed with cool apps. And just in case you want, even more, you can download additional apps to expand your site.  

We're constantly working with our dedicated community to build new and exciting ones."  

The official site for Fork CMS  
 

Kunstmaan Bundles CMS

Kunstmaan Bundles CMS logo

"The Kunstmaan Bundles CMS is an advanced yet user-friendly content management system, based on the full stack Symfony framework combined with a whole host of community bundles. It provides a full-featured, multi-language CMS system with an innovative page and form assembling process, versioning, workflow, translation and media managers, and much more."  

 

Symfony components used by Kunstmaan include:
  • Cache
  • Config
  • Console
  • CssSelector
  • DependencyInjection
  • DomCrawler
  • ErrorHandler
  • EventDispatcher
  • ExpressionLanguage
  • Filesystem
  • Finder
  • Form
  • HttpFoundation
  • HttpKernel
  • Inflector
  • Mailer
  • Mime
  • OptionsResolver
  • PHPUnit Bridge
  • PropertyAccess
  • Routing
  • Serializer
  • Translation
  • Validator
  • Yaml

 

Kunstmaan states, "An advanced yet user-friendly content management system, based on the full stack Symfony framework combined with a whole host of community bundles.  

You probably know that building beautiful website management interfaces is hard work. That's why we combined over a decade of experience in designing and developing content management systems (CMS) with the Symfony framework and community bundles. We did so to create a set of bundles that enable you to produce high quality, flexible, and above all user-friendly CMS-based websites without the hassle of creating the admin interface."  

The official site for Kunstmaan Bundles CMS  
 

Zikula

Zikula logo

Zikula has minimal Symfony integrations.  

"Zikula is a Web Application Toolkit, which allows you to run impressive websites and build powerful online applications. Zikula has received praise for many things, but we believe the highlights are ease of use, quick and easy development, security and performance, and lastly, flexibility."  

 

     

 

Zikula says "Zikula is Free Open Source Software (FOSS). It allows you to build simple one-page websites to individual web applications utilizing different types of extensions for making your project to something special.  

For this, you can extend Zikula's functionality with modules and realize a custom look using themes."  

The official site for Zikula  
 

Concrete 5

Concrete 5 logo

"Concrete5 is an open-source CMS designed to revolutionize user experience. Go to any page on your site, and an editing toolbar gives you all the controls you need to update your website. No intimidating manuals, no complicated administration interfaces - just point and click."

 

Components used by Concrete CMS include:
  • Cache
  • ClassLoader
  • Console
  • EventDispatcher
  • HttpFoundation
  • HttpKernel
  • Messenger
  • Polyfill UUID
  • PropertyAccess
  • Routing
  • Serializer
  • Yaml

 

Here's Concrete's pitch "Imagine being able to edit your website as easily as you edit a document. No intimidating manuals, no complicated administration interfaces - just point and click.  

Your developers can build different page types and blocks that can be used interchangeably in dynamic ways over time. In addition, explicit permissions and workflow approval processes let you model processes that work for getting your organization's content online safely and quickly.  

You get all of that for free in a fully open-source stack you can put anywhere, or you can work directly with us to get a robust DevOps pipeline based hosting and support."  

The official site for concrete5  
 

Roadiz

Roadiz log

"Roadiz is a modern CMS based on a polymorphic node system that can handle many types of services and contents. Its backend has been developed with a high sense of design and user experience. Its theming system is built to work independently from the backend allowing easy switching and multiple themes for one set of content. For example, it allows you to create one theme for your desktop website and another for your mobile, using the same node hierarchy. Roadiz is released under MIT license so that you can reuse and distribute its code for personal and commercial projects."  

 

Roadiz uses these Symfony components:
  • Asset
  • Config
  • Console
  • Dotenv
  • ExpressionLanguage
  • Filesystem
  • Finder
  • Form
  • HttpFoundation
  • HttpKernel
  • Messenger
  • RateLimiter
  • Routing
  • Security
  • Serializer
  • Stopwatch
  • Translation
  • Validator
  • Workflow
  • Yaml

 

Roadiz states, "Roadiz is a modern CMS based on a node system which can handle many types of services. Based on Symfony components and Doctrine ORM, it allows you to create your data schema from scratch and to organize your content as you want."  

The official site for Roadiz  
 

Contao

Contao logo

"Contao is an accessible open source content management system, first published in 2006. Starting with version 4 (released in spring 2015), Contao is based on the Symfony full-stack framework and steadily migrates the existing libraries to Symfony components."  

 

Symfony components used by Contao include:
  • Asset
  • BrowserKit
  • Cache
  • Config
  • Console
  • Contracts
  • CssSelector
  • DependencyInjection
  • DomCrawler
  • Dotenv
  • ErrorHandler
  • EventDispatcher
  • ExpressionLanguage
  • Filesystem
  • Finder
  • Form
  • HttpClient
  • HttpFoundation
  • HttpKernel
  • Intl
  • Ldap
  • Lock
  • Mailer
  • Messenger
  • Mime
  • Notifier
  • OptionsResolver
  • PasswordHasher
  • PHPUnit Bridge
  • Polyfill Ctype
  • Polyfill Intl Grapheme
  • Polyfill Intl ICU
  • Polyfill Intl IDN
  • Polyfill Intl Normalizer
  • Polyfill Mbstring
  • Polyfill PHP 8.1
  • Polyfill UUID
  • Process
  • PropertyAccess
  • PropertyInfo
  • RateLimiter
  • Routing
  • Runtime
  • Guard
  • Semaphore
  • Serializer
  • Stopwatch
  • String
  • Templating
  • Translation
  • Uid
  • Validator
  • VarDumper
  • VarExporter
  • WebLink
  • Workflow
  • Yaml

 

Contao says, "As an open-source CMS, Contao is based on open web standards and is easily adaptable to your needs. It features High development standards, regular updates, fast and reliable fixes, and four years of support for LTS versions."  

The official site for Contao  
 

init CMS

init CMS logo

Init takes a unique approach.  

"The InitCmsBundle is a small flexible CMS core based on Symfony which can be used as a standalone CMS or integrated into any existing Symfony project."  

Symfony components used by init CMS include:

Symfony components used by init CMS include:
  • Asset
  • Console
  • ExpressionLanguage
  • Form
  • PHPUnit Bridge
  • Polyfill APCu
  • Translation
  • Validator
  • Yaml

 

"The init CMS is mission-tested, ideal for simple or complex websites that need an individual design. Furthermore, since it is based on a modern framework (Symfony2), custom-made extensions can be developed quickly and easily according to customer requirements, so that no wishes remain unfulfilled."  

The official site for init CMS  
 

Pico

Pico logo

In my opinion, Pico barely qualifies as a Symfony CMS.  

"Pico is a stupidly simple, blazing fast, flat file CMS. You simply create markdown files in the content folder, and those files become your pages. Pico trades one-click setups and complex management interfaces for blazing speed, flexibility, and a lightweight footprint."  

 

Pico uses one Symfony component:
  • Yaml

 

It also incorporates Twig.  

"Pico is a "flat file" CMS, meaning no database woes, no MySQL queries, nothing. You can edit your website in your favorite text editor using simple Markdown formatting. Pico uses the Twig templating engine for powerful and flexible themes."  

The official site for Pico  
 

Summing it up

I'm impressed. You have reached the end of this extensive overview. Congratulations.

As you have seen, there is a wide variety of content management systems built with Symfony components.

They range from full-featured plug-and-play ones to those easily customized on the front and backend to template-like ones that let you build a CMS your way.

I hope you found it helpful in searching for the perfect Symfony-based CMS. Or at least the best one for your project.

Bookmark this article if you are still undecided, and thanks for reading.

 

If you think others could benefit, please share this resource.

 

More to explore

Author

Reuben Walker photo

 

Reuben Walker

Founder
Symfony Station

 

 

 


 

Subscribe to TYPO3

 

 

Follow Symfony Station on Mastodon Mastodon Icon Twitter Twitter Icon Flipboard Flipboard Icon or Our Newsletter Newsletter Icon