The best explanation I found is in the Symfony Form class description:
<?php ... namespace Symfony\Component\Form; use ... class Form implements \IteratorAggregate, FormInterface { ... }
EDIT: Here is a video from the author of the component of the form Sf (co), where he explains the data formats and gives an example of using the normalized format β https://youtu.be/Q80b9XeLUEA?t=7m6s
So basically, each form has data in three different formats. The first two: model data is the data that you use in the domain model, and view data is data that is usually displayed as a string in HTML, or you enter it in the form fields before sending.
Two simple examples: TextType and NumberType. In TextType, model data is a string, and view data is a string.
In the NumberType type, the model data is a float β in your application, you process the float type, and the view data is a localized string.
But on the other hand, if we look at DateType, things will be a little more complicated, because the model data can be string ("YYYY-MM-DD"), an integer (unix timestamp) array, or a DateTime object. View data can be a localized string or array.

For example, if you want to write an event listener, you cannot be sure which data format you will receive:
class MyDateType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add... ->addEventListener( FormEvents::FormEvents::SUBMIT, array($this, 'onSubmit') ) ; } public function onSubmit(FormEvent $event) {
Fortunately, the Sf form has a third data format - the normalized format. This format is static - you always know what you get, it is always the same data type!

public function onSubmit(FormEvent $event) {