Symfony:向表单提交Json字符串


Symfony: submit Json string to form

我有以下Json字符串:

  {
    "firstName":"Jane",
    "tagList": ["chess", "tennis"]
  }

这是UserType

     public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('email', EmailType::class)
        ->add('firstName')
        ->add('lastName')
        ->add('aboutMe')
        ->add('password')
        ->add('tagList', EntityType::class)
        ->add('agreeToContact')
        ->add('useMyLocation')
        ->add('pushNotifications')
        ->add('emailNotifications')
        ->add('inAppAlerts')
        ->add('addRequestIntoNatCal')
    ;
    $builder->addEventListener(FormEvents::PRE_SUBMIT, function(FormEvent $event) {
        $form = $event->getForm();
        $tagList = $form["tagList"]->getData();
        foreach ($tagList as $tag){
            $testTag = $this->em->getRepository('CoreBundle:Tag')->findOneBy([
                'name' => $tag
            ]);
            if ($testTag != null)
            {
                $user->addTag($testTag);
            }
            else
            {
                $newTag = new Tag();
                $newTag->setName($tag);
                $this->em->persist($newTag);
                $user->addTag($newTag);
            }
        }
    });
}

我如何在Json中提交标签名称列表并设置相应的标签实体列表给用户?UserTag实体具有Many-to-Many关系。问题是:首先我需要检查Tag实体是否存在,如果是,将该标签添加到用户,如果没有创建新标签并将其添加到用户。如何在addEventListener

中获取当前用户

使用eventSubscriber代替。将它注册为一个服务,将token_storage注入到它的构造函数