phpjsonsymfonysymfony-formsdatabinder

API REST php7 symfony 3.4 - Databind json to forms


I found this: "How to process nested json with FOSRestBundle and Symfony forms" but the acepted reply was: "making an unmapped form and binding data manually using a form event"

In play, you can write your own data binder but for most formats(xml, json, ...), you can take the data automatically based on the Content-Type http header (the @BodyParser.Of(BodyParser.Json.class) is not mandatory here to get it working), there are some well know data binders available(from Spring or wherever). A product can have a list of items, and even so, you can bind the request body to a form automatically.

PHP/Symfony no learn yet how to solve this issue? If I create an API REST in php + symfonmy I need to write some kind of "parser" like this? Can some one share a link to a post or an example with a solution to this?

PD: I use the play example because I am not an experienced web developer(less in PHP), so take this like my mcve.

Thanks in advance.


Solution

  • To solve this issue be sure all field on the form that have a relation are defined explicit:

    $builder->add('field_simple')
            ->add('field_entity')
    ...
    

    The code above will not work because the field 'field_entity' will be take like another simple field, you will have to define all the fields of entities or at lest the fields of interest, example:

    $builder->add('field_simple')
            ->add('field_entity', EntityType::class, array(
                'class' => CustomEntity::class,
                ...
            ))
    ...
    

    Best Regards...