首页 > 解决方案 > Symfony 表单和 json 对象验证

问题描述

我正在尝试创建一个类型的对象,比如说,Slot与其他类型的对象相关,Customer. 这是发布请求正文的样子。

  {
       "name: "foo
       "customer": {id: 21}
  }

这是我获取数据和构建表单的方式:

$data = json_decode($request->getContent(), true);
$entity = new Slot();

$entityManager = $this->getDoctrine()->getManager();
$form = $this->createForm(SlotType::class, $entity);
    
$form->submit($data, true);

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder

          ->add('customer', EntityType::class, [
                         "class" => Customer::class
           ]);

我用来提交此数据的表单使用EntityType表单类型,但它似乎无法识别为该customer字段发布的数据,并告诉我该值对该字段无效。我是否需要预处理控制器中的数据以使用关联实体填充我的实体?或者有没有办法将 dataTransformers 附加到SlotType有效数据填充表单?

标签: phpsymfony

解决方案


您可以使用具有属性(slotTypeName 和 customerId)的 DTO,表单会更容易,并且在验证后您可以使用此 DTO 来构建您的实体


推荐阅读