api - FOSRestBundle post many to one relation -


i know how post data when entity has manytoone relation in fosrestbundle.

user entity has locale (locale_id):

/**  * @orm\manytoone(targetentity="locale")  * @orm\joincolumn(name="locale_id", referencedcolumnname="id")  */ private $locale; 

i hoping passing like:

{      "user":{         "firstname":"john",         "emailaddress":"somewhere@somehow.com",         "lastname":"doe",         "sex":"1",         "locale":{             "id":"1"         }     }  } 

will work, not pass validation , symfony throws:

{"code":400,"message":"validation failed","errors":{"children":{"firstname":[],"lastname":[],"emailaddress":[],"sex":[],"locale":{"errors":["this value not valid."]}}}} 

as can see, locale still wrong.

does know how can post properly?

edit

here how form looks like:

<?php  namespace software\bundle\form\type;  use doctrine\orm\entityrepository; use symfony\component\form\formbuilderinterface; use symfony\component\optionsresolver\optionsresolverinterface; use symfony\component\validator\constraints\email; use symfony\component\validator\constraints\length; use symfony\component\validator\constraints\notblank;  /**  * class usertype  * @package software\bundle\form\type  */ class usertype extends abstractformtype {     public function buildform(formbuilderinterface $builder, array $option)     {         $builder             ->add('firstname', 'text', [                 'label' => 'word.first_name',                 'required' => true             ])             ->add('lastname', 'text', [                 'label' => 'word.last_name',                 'required' => true             ])             ->add('emailaddress', 'email', [                 'label' => 'word.email_address',                 'required' => true             ])             ->add('sex', 'choice', [                 'label' => 'word.sex',                 'choices' => [                     '0' => 'word.male',                     '1' => 'word.female'                 ],                 'required'    => true,                 'empty_value' => 'word.select',                 'empty_data' => null             ])             ->add('locale', 'entity', [                 'label' => 'word.locale',                 'required'    => false,                 'property' => 'code',                 'class' => 'softwarebundle:locale',                 'query_builder' => function(entityrepository $er) {                         return $er->createquerybuilder('l')                             ->orderby('l.code', 'asc');                     },                 'placeholder' => 'word.select',                 'empty_data'  => null             ])         ;     }      public function setdefaultoptions(optionsresolverinterface $resolver)     {         $resolver->setdefaults([             'translation_domain'    => 'general',             'data_class'            => 'software\bundle\entity\user',             'attr'                  => ['novalidate' => 'novalidate'],             'csrf_protection'       => false         ]);     }      public function getname()     {         return 'user';     } } 

edit 2

and controller:

public function postaction(request $request) {     $form = $this->createform(new usertype(), new user());     $form->handlerequest($request);      if($form->isvalid())     {         die('are valid or not??');     }      return $this->view($form, 400); } 

try without "1" , 1 , otherwise can interpreted string.

edit :

{      "user":{         "firstname":"john",         "emailaddress":"somewhere@somehow.com",         "lastname":"doe",         "sex":"1",         "locale": 1         }     }  } 

Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

python - NameError: name 'subprocess' is not defined -