在请求中包含附加数据的Symfony EntityType,TransformationFailedException

时间:2018-02-07 22:29:44

标签: php forms symfony types request

我有以下问题。我正在使用Symfony 3和FOSRestBundle。根据请求(PUT)我想存储一个带有一些外键的实体(引用实体)。 请求有效负载采用JSON格式,我创建了一些自定义表单类型,以使它们自动与实体匹配。这适用于大多数情况。

在某些情况下,我不希望请求更改引用的实体,并且我在请求中有一些额外的信息。

我认为我必须使用formtype EntityType,因为这会像选择现有实体一样反应。但是使用它只有在请求的有效负载(json)只有一个带有值的简单属性时才有效。在我的情况下,我得到一个json-object属性,其中id存在一些其他信息。 在这种情况下,FormValidator会抛出一个错误告诉:

带有This value is not valid.ConstraintViolation

TransformationFailedException,邮件为All choices submitted must be NULL, strings or ints.

有没有办法使用其中一个Datatransformers,例如ViewtransformerModeltransformer处理此案件?

JSON-Request,mask属性导致错误

{
   "id": 1,
   "duration": 10,
   "mask": {
      "id": 218,
      "name": "Mask1",
      "maskElement": {
         "id": 472,
         "x" : 123,
        }
    }
}

使用Mask实体

的SlideType Formtype
public function buildForm(FormBuilderInterface $builder, array $options)
{
   $builder->add("id", TextType::class, ["mapped" => false])
   ->add("duration")
   ->add('mask',EntityType::class,
      [
         "class" => Mask::class,
         "allow_extra_fields" => true,
         "query_builder" => function(MaskRepository $maskRepository){
               return $maskRepository->createQueryBuilder("m");
            }
      ]);
}

任何帮助都会非常感激。

0 个答案:

没有答案