SonataFormatterBundle
SonataFormatterBundle copied to clipboard
[Branch 5.x] FormatterListener not called when using FormatterType
Environment
PHP 8.1.9 Symfony 5.4.11
Sonata packages
show
$ composer show --latest 'sonata-project/*'
Direct dependencies:
sonata-project/admin-bundle 4.16.0 4.18.0 The missing Symfony Admin Generator
sonata-project/block-bundle 4.16.1 4.16.2 Symfony SonataBlockBundle
sonata-project/classification-bundle 4.3.0 4.3.0 Symfony SonataClassificationBundle
sonata-project/doctrine-orm-admin-bundle 4.4.0 4.6.0 Integrate Doctrine ORM into the SonataAdminBundle
sonata-project/entity-audit-bundle 1.8.0 1.8.0 Audit for Doctrine Entities
sonata-project/formatter-bundle 5.0.0 5.0.0 Symfony SonataFormatterBundle
sonata-project/media-bundle 4.5.0 4.5.0 Symfony SonataMediaBundle
sonata-project/seo-bundle 3.2.0 3.2.0 Symfony SonataSeoBundle
sonata-project/user-bundle 5.3.2 5.3.3 Symfony SonataUserBundle
Transitive dependencies:
sonata-project/cache 2.2.0 2.2.0 Cache library
Package sonata-project/cache is abandoned, you should avoid using it. No replacement was suggested.
sonata-project/doctrine-extensions 1.17.0 2.0.1 Doctrine2 behavioral extensions
sonata-project/exporter 3.0.0 3.0.0 Lightweight Exporter library
sonata-project/form-extensions 1.18.0 1.18.0 Symfony form extensions
sonata-project/twig-extensions 1.12.0 2.0.0 Sonata twig extensions
Symfony packages
show
$ composer show --latest 'symfony/*'
Direct dependencies:
symfony/asset v5.4.7 v6.1.0 Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files
symfony/browser-kit v5.4.11 v6.1.3 Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically
symfony/console v5.4.11 v6.1.3 Eases the creation of beautiful and testable command line interfaces
symfony/css-selector v5.4.11 v6.1.3 Converts CSS selectors to XPath expressions
symfony/debug-bundle v5.4.11 v6.1.3 Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack ...
symfony/dotenv v5.4.5 v6.1.0 Registers environment variables from a .env file
symfony/expression-language v5.4.11 v6.1.3 Provides an engine that can compile and evaluate expressions
symfony/flex v1.19.2 v2.2.3 Composer plugin for Symfony
symfony/form v5.4.11 v6.1.3 Allows to easily create, process and reuse HTML forms
symfony/framework-bundle v5.4.11 v6.1.3 Provides a tight integration between Symfony components and the Symfony full-stack framework
symfony/http-client v5.4.11 v6.1.3 Provides powerful methods to fetch HTTP resources synchronously or asynchronously
symfony/intl v5.4.11 v6.1.0 Provides a PHP replacement layer for the C intl extension that includes additional data from the ICU library
symfony/mailer v5.4.11 v6.1.3 Helps sending emails
symfony/maker-bundle v1.45.0 v1.45.0 Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.
symfony/messenger v5.4.11 v6.1.3 Helps applications send and receive messages to/from other applications or via message queues
symfony/monolog-bundle v3.8.0 v3.8.0 Symfony MonologBundle
symfony/phpunit-bridge v6.1.3 v6.1.3 Provides utilities for PHPUnit, especially user deprecation notices management
symfony/process v5.4.11 v6.1.3 Executes commands in sub-processes
symfony/property-access v5.4.11 v6.1.3 Provides functions to read and write from/to an object or array using a simple string notation
symfony/property-info v5.4.11 v6.1.3 Extracts information about PHP class' properties using metadata of popular sources
symfony/proxy-manager-bridge v5.4.6 v6.1.0 Provides integration for ProxyManager with various Symfony components
symfony/runtime v5.4.11 v6.1.3 Enables decoupling PHP applications from global state
symfony/security-bundle v5.4.11 v6.1.3 Provides a tight integration of the Security component into the Symfony full-stack framework
symfony/sendgrid-mailer v5.4.7 v6.1.0 Symfony Sendgrid Mailer Bridge
symfony/serializer v5.4.11 v6.1.3 Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.
symfony/stopwatch v5.4.5 v6.1.0 Provides a way to profile code
symfony/translation v5.4.11 v6.1.3 Provides tools to internationalize your application
symfony/twig-bundle v5.4.8 v6.1.1 Provides a tight integration of Twig into the Symfony full-stack framework
symfony/uid v5.4.11 v6.1.3 Provides an object-oriented API to generate and represent UIDs
symfony/validator v5.4.11 v6.1.3 Provides tools to validate values
symfony/var-dumper v5.4.11 v6.1.3 Provides mechanisms for walking through any arbitrary PHP variable
symfony/web-link v5.4.3 v6.1.0 Manages links between resources
symfony/web-profiler-bundle v5.4.10 v6.1.2 Provides a development tool that gives detailed information about the execution of any request
symfony/webpack-encore-bundle v1.15.1 v1.15.1 Integration with your Symfony app & Webpack Encore!
symfony/yaml v5.4.11 v6.1.3 Loads and dumps YAML files
Transitive dependencies:
symfony/amqp-messenger v5.4.11 v5.4.11 Symfony AMQP extension Messenger Bridge
symfony/cache v5.4.11 v6.1.3 Provides an extended PSR-6, PSR-16 (and tags) implementation
symfony/cache-contracts v2.5.2 v3.1.1 Generic abstractions related to caching
symfony/config v5.4.11 v6.1.3 Helps you find, load, combine, autofill and validate configuration values of any kind
symfony/dependency-injection v5.4.11 v6.1.3 Allows you to standardize and centralize the way objects are constructed in your application
symfony/deprecation-contracts v3.1.1 v3.1.1 A generic function and convention to trigger deprecation notices
symfony/doctrine-bridge v5.4.11 v6.1.3 Provides integration for Doctrine with various Symfony components
symfony/doctrine-messenger v5.4.11 v6.1.3 Symfony Doctrine Messenger Bridge
symfony/dom-crawler v5.4.11 v6.1.3 Eases DOM navigation for HTML and XML documents
symfony/error-handler v5.4.11 v6.1.3 Provides tools to manage errors and ease debugging PHP code
symfony/event-dispatcher v5.4.9 v6.1.0 Provides tools that allow your application components to communicate with each other by dispatching events and listening to them
symfony/event-dispatcher-contracts v3.1.1 v3.1.1 Generic abstractions related to dispatching event
symfony/filesystem v5.4.11 v6.1.3 Provides basic utilities for the filesystem
symfony/finder v5.4.11 v6.1.3 Finds files and directories via an intuitive fluent interface
symfony/http-client-contracts v2.5.2 v3.1.1 Generic abstractions related to HTTP clients
symfony/http-foundation v5.4.11 v6.1.3 Defines an object-oriented layer for the HTTP specification
symfony/http-kernel v5.4.11 v6.1.3 Provides a structured process for converting a Request into a Response
symfony/mime v5.4.11 v6.1.3 Allows manipulating MIME messages
symfony/monolog-bridge v5.4.10 v6.1.2 Provides integration for Monolog with various Symfony components
symfony/options-resolver v5.4.11 v6.1.0 Provides an improved replacement for the array_replace PHP function
symfony/password-hasher v5.4.11 v6.1.3 Provides password hashing utilities
symfony/polyfill-intl-grapheme v1.26.0 v1.26.0 Symfony polyfill for intl's grapheme_* functions
symfony/polyfill-intl-icu v1.26.0 v1.26.0 Symfony polyfill for intl's ICU-related data and classes
symfony/polyfill-intl-idn v1.26.0 v1.26.0 Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions
symfony/polyfill-intl-normalizer v1.26.0 v1.26.0 Symfony polyfill for intl's Normalizer class and related functions
symfony/polyfill-mbstring v1.26.0 v1.26.0 Symfony polyfill for the Mbstring extension
symfony/polyfill-php72 v1.26.0 v1.26.0 Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions
symfony/polyfill-php73 v1.26.0 v1.26.0 Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions
symfony/polyfill-php80 v1.26.0 v1.26.0 Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions
symfony/polyfill-php81 v1.26.0 v1.26.0 Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions
symfony/polyfill-uuid v1.26.0 v1.26.0 Symfony polyfill for uuid functions
symfony/redis-messenger v5.4.6 v6.1.3 Symfony Redis extension Messenger Bridge
symfony/routing v5.4.11 v6.1.3 Maps an HTTP request to a set of configuration variables
symfony/security-acl v3.3.1 v3.3.1 Symfony Security Component - ACL (Access Control List)
symfony/security-core v5.4.11 v6.1.3 Symfony Security Component - Core Library
symfony/security-csrf v5.4.11 v6.1.0 Symfony Security Component - CSRF Library
symfony/security-guard v5.4.9 v5.4.9 Symfony Security Component - Guard
symfony/security-http v5.4.11 v6.1.3 Symfony Security Component - HTTP Integration
symfony/service-contracts v2.5.2 v3.1.1 Generic abstractions related to writing services
symfony/string v5.4.11 v6.1.3 Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way
symfony/translation-contracts v2.5.2 v3.1.1 Generic abstractions related to translation
symfony/twig-bridge v5.4.11 v6.1.3 Provides integration for Twig with various Symfony components
symfony/var-exporter v5.4.10 v6.1.3 Allows exporting any serializable PHP data structure to plain PHP code
PHP version
$ php -v
PHP 8.1.9 (cli) (built: Aug 4 2022 21:09:01) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.9, Copyright (c) Zend Technologies
with Zend OPcache v8.1.9, Copyright (c), by Zend Technologies
with Xdebug v3.1.5, Copyright (c) 2002-2022, by Derick Rethans
Subject
When a FormatterType widget is used, the transformed content (target_field) is not set because FormatterListener is not called when the form is submitted.
configureFormFields() as follows:
->add('content', FormatterType::class, [
'label' => 'content',
'required' => true,
'format_field' => 'contentFormatter',
'format_field_options' => [
'choices' => [
'Rich HTML' => 'richhtml',
'Raw HTML' => 'rawhtml',
],
'empty_data' => 'richhtml',
],
'source_field' => 'rawContent',
'ckeditor_context' => 'news',
'ckeditor_image_format' => 'reference',
'target_field' => 'content',
'listener' => true,
])
form as follows:
A FormatterListener is registered for the "content" form's form.submit listeners. The "content" form is set with inherit_data: true, so the "content" form's submit process does not call the FormEvent::SUBMIT event.
Prior to 5.x, FormatListener was called by the 'event_dispatcher' option, but in 5.x the 'event_dispatcher' option has been removed.
Minimal repository with the bug
https://github.com/sonata-project/SonataFormatterBundle/tree/7ee53e723c3c4c3c576d771954a18920127307f6
Steps to reproduce
Install the Sonata stack with the version I use Install Ckeditor Configure a Sonata Admin with a Ckeditor field Edit the Ckeditor field on Admin create page Submit the form ( by clicking the btn_create_and_edit_again button )
Expected results
transformed content (target_field) is set and created successfully.
Actual results
transformed content (target_field) is not set and NotBlank form error occurs.