This document discusses extending eZ Platform 2.x with Symfony and React. It provides background on the technology stack changes from 1.x to 2.x, including moving from YUI3 to Symfony and React to improve performance and extensibility. It describes various extension points for both frontend and backend developers, such as React modules, field types, and application menus. It demonstrates performance improvements of 2.x over 1.x through examples of login and location pages loading over 10x faster.
13. Why ReactJS?
• Mechanism of quick UI updates,
• Easy way to manage state and data flow,
• Easy to implement event handlers,
• Paradigm of splitting code into smaller components,
• No need to use any extra templating engines, like Handlebars,
• Easy to combine with any other JS library or framework (if needed).
14. Why not Web Components?
• Difficult to extend existing Web Components when ShadowDOM is on,
• Custom Elements are just another way of writing divs with CSS classes,
• Not many good practices for Web Components development,
• Slow to develop new features.
16. Browsers support in theAdminUI
The latest version of the following browsers:
• Mozilla Firefox,
• Google Chrome,
• Microsoft Edge,
• Safari,
• Opera
17. Why only the latest versions of browsers?
• Latest JS features,
• Latest CSS features,
• HTML5 APIs
18. What about mobile devices?
This is not our target, because of Page Builder feature.
20. What can you extend in theAdminUI?
Everything in AdminUI can be extended:
• with PHP code (in most cases),
• with JavaScript/ReactJS (in some cases).
42. Adding new tabs – the Twig code
{{ ez_platform_tabs('location-view', {
'content': content,
'location': location
}, '@EzPlatformAdminUi/parts/tab/locationview.html.twig') }}
43. Field Types
• Content editing is now powered by Symfony Forms,
• Developers have to provide mapping service between repository fieldtype and
Symfony Forms,
• Templating is easier,
• Customizable via EventListeners, DataTransformers, Type Extensions etc.
44. Other approaches of extendingAdminUI
• Overriding Twig templates,
• Overriding service definitions,
• Compiler passes,
• Bundle's extension class,
• Semantic configuration,
• Event listeners