我正在使用FosrestBundle,以我的形式,我在许多关系上都有一个实体类型。
我正在使用邮递员,并且我尝试了多种不同的语法来验证表单,但是每次都出现此错误:“此值无效”]]。
{ "form": { "children": { "email": {}, "password": {}, "establishment": { "children": { "name": {}, "address": {}, "postcode": {}, "city": {}, "subway": {}, "description": {}, "categories": { "errors": [ "This value is not valid." ] }, "imageFile": { "children": { "file": {} } } } } } }, "errors": [ "This value is not valid." ]
}
如果我确实使用普通形式(不是通过API),它会进行验证而不会出现任何错误!
有人有什么解决办法吗?
在我的模型中,我拥有可以根据需要设置任意多个类别的机构。
public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('name', TextType::class) ->add('address', TextType::class) ->add('postcode', IntegerType::class) ->add('city', TextType::class) ->add('subway', TextType::class) ->add('description', TextareaType::class) ->add('categories', EntityType::class, [ // looks for choices from this entity 'class' => Category::class, 'choice_label' => function ($category) { return $category->getName(); }, // used to render a select box, check boxes or radios 'multiple' => true, 'expanded' => false ]) ->add('imageFile', VichImageType::class, [ 'required' => false, 'allow_delete' => true, 'asset_helper' => true, ]) ->add('save', SubmitType::class) ; } public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'data_class' => Establishment::class, ]); }
}
public function createEstablishment(User $user, Request $request, UserPasswordEncoderInterface $passwordEncoder) { $repository = $this->getDoctrine()->getRepository(User::class); if ($repository->findOneBy(['email' => $user->getEmail()])) { return $this->view( "This user already exists", Response::HTTP_CONFLICT ); } else { $user = new User(); $form = $this->createForm(UserEstablishmentType::class, $user, [ 'csrf_protection' => false, ]); $form->handleRequest($request); $form->submit($request->request->all()); if ($form->isSubmitted() && $form->isValid()) { $user = $form->getData(); $user->setPassword($passwordEncoder->encodePassword($user, $user->getPassword())); $user->setRoles(["ROLE_ESTABLISHMENT"]); $user->getEstablishment()->setLatitude(48.86788); $user->getEstablishment()->setLongitude(2.34718); $em = $this->getDoctrine()->getManager(); $em->persist($user); $em->flush(); return $this->view( $user, Response::HTTP_CREATED ); } //die(var_dump($form->getExtraData())); return $this->view( $form->getErrors(true), Response::HTTP_BAD_REQUEST ); } }
由POSTMAN通过RAW在正文中发送:
{ "email": "[email protected]", "password": "etablissement", "establishment": { "name": "etablissement", "address": "62 rue du cehmin vert", "postcode": 75011, "city": "paris", "subway": "richard lenoir", "description": "etablissement test", "categories": [{"id" : 7}] }
}
感谢您的任何帮助! :)
我正在使用FosrestBundle,在我的表单中,我有许多实体关系上的实体类型。我正在使用邮递员,并且尝试了多种语法来验证表单,但是我得到了...
尝试更改请求数据的格式