I have following Json string:
{
"firstName":"Jane",
"tagList": ["chess", "tennis"]
}
And this is my 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);
}
}
});
}
How can I submit list of tag names in Json and set correspondent Tag entites list to User? User
and Tag
entites have Many-to-Many
relationship. Problem is: first I need to check if Tag
entity exists, if yes add that tag to user, if not create new one and add it to user. How can I get current user in addEventListener