2016-08-15 32 views
0

我有以下的JSON字符串:的Symfony:提交JSON字符串形成

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

這是我的用戶類型

 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提交標記名稱的列表並設置相應標籤的entites列表給用戶? UserTag entites有Many-to-Many的關係。問題是:首先我需要檢查Tag實體是否存在,如果是,請將該標籤添加到用戶,如果不是創建新標籤並將其添加到用戶。我如何獲得當前用戶addEventListener

回答

0

改爲使用eventSubscriber。 註冊爲服務,將token_storgage注入其構造函數