【发布时间】:2016-12-21 13:29:02
【问题描述】:
我有以下 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 中提交标签名称列表并将对应的标签实体列表设置为用户? User 和 Tag 实体具有 Many-to-Many 关系。问题是:首先我需要检查Tag 实体是否存在,如果是,则将该标签添加到用户,如果不创建新标签并将其添加到用户。如何获取addEventListener中的当前用户
【问题讨论】: