首页 > 解决方案 > Symfony 3:向已经提交的表单添加一个字段

问题描述

在查看其他主题后我还没有解决我的问题,我希望将字段 user_id 添加到表单中(因为用户不会选择它)但是 symfony 返回我“调用字符串上的成员函数 addEventListener() "

这是我的代码:

if ($form->isSubmitted() && $form->isValid()) {
        $builder->addEventListener(FormEvents::PRE_SUBMIT, function(FormEvent $event) {
            $data = $event->getData();
            $form = $event->getForm();
            $data['user_id'] = '2';
            $event->setData($data); 
        });
        $em = $this->getDoctrine()->getManager();
        $em->persist($deplacement);
        $em->flush($deplacement);

        return $this->redirectToRoute('deplacement_show', array('id' => $deplacement->getId()));
    }

标签: formssymfonyfield

解决方案


确定这是好方法吗?也许你最好编写一个方法来更新或创建 $deplacement,并传递 2 个参数:表单中的 $data 变量和 user_id,如下所示:

if ($form->isSubmitted() && $form->isValid()) {

    $em = $this->getDoctrine()->getManager();
    $userId = 2; 
    $formData->userId = $userId;
    $deplacement->update($formData);
    $em->persist($deplacement);
    $em->flush($deplacement);

    return $this->redirectToRoute('deplacement_show', array('id' => $deplacement->getId()));
}

另外我认为你不需要事件监听器。你为什么用它?


推荐阅读