【问题标题】:FOSRestBundle FormType convert JsonArray to ArrayCollectionFOSRestBundle FormType 将 JsonArray 转换为 ArrayCollection
【发布时间】:2020-10-31 21:46:58
【问题描述】:

您好,我目前正在创建一个 Rest Api,我想收到这样的信息:

{"collection": [1,2,3]}

我想出了这样的东西:

    public function postDTOAction(Request $request) {
        $form = $this->createForm(DTOType::class);
        $form->submit($request->request->all());
        if ($form->isValid()) {
            return $this->view($form->getData());
        }

        return  $this->view($form);
    }

class DTO {
   public ArrayCollection $collection;
   public function __construct()
   {
       $this->collection = new ArrayCollection();
   }
}

class DTOType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('collection');
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => DTO::class,
            'csrf_protection' => false
        ]);

    }
}

不知何故,这似乎不起作用,我收到collection 是无效类型的错误。

【问题讨论】:

    标签: php json forms symfony fosuserbundle


    【解决方案1】:

    将我的 DTO 更改为(将 ArrayCollection 替换为普通数组)

    class DTO {
       public array $collection;
       public function __construct()
       {
           $this->collection = [];
       }
    }
    

    添加

    $builder->add('collection', CollectionType::class, ['allow_add' => true]);
    

    解决了我的问题。

    【讨论】:

      猜你喜欢
      • 2014-06-22
      • 2013-11-15
      • 2017-06-25
      • 2013-06-06
      • 2016-06-05
      • 2015-07-30
      • 2016-10-29
      • 1970-01-01
      相关资源
      最近更新 更多