Fosrestbundle格式错误,该值无效的实体类型

问题描述 投票:0回答:1

我正在使用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,在我的表单中,我有许多实体关系上的实体类型。我正在使用邮递员,并且尝试了多种语法来验证表单,但是我得到了...

symfony4 fosrestbundle symfony-validator
1个回答
0
投票

尝试更改请求数据的格式

© www.soinside.com 2019 - 2024. All rights reserved.