我有以下问题。我正在使用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
,例如Viewtransformer
或Modeltransformer
处理此案件?
JSON-Request,mask
属性导致错误
{
"id": 1,
"duration": 10,
"mask": {
"id": 218,
"name": "Mask1",
"maskElement": {
"id": 472,
"x" : 123,
}
}
}
使用Mask
实体
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");
}
]);
}
任何帮助都会非常感激。