Symfony 3.3将用户信息沿表单数据插入表中

Symfony 3.3将用户信息沿表单数据插入表中,symfony,doctrine,Symfony,Doctrine,我有一个实体“品牌”,如下所示 身份证 名字 用户id 我想将当前登录的用户id插入此品牌表,我的控制器代码如下,id和名称工作正常,正在插入表中,请告诉我应该添加什么以将当前用户id插入db表,用户可以有多个品牌 public function newBrandAction(Request $request) { $brand = new brand(); $form = $this->createFormBuilder($brand) ->add('n

我有一个实体“品牌”,如下所示

  • 身份证
  • 名字
  • 用户id
我想将当前登录的用户id插入此品牌表,我的控制器代码如下,id和名称工作正常,正在插入表中,请告诉我应该添加什么以将当前用户id插入db表,用户可以有多个品牌

public function newBrandAction(Request $request)
{
    $brand = new brand();
    $form = $this->createFormBuilder($brand)
    ->add('name',TextType::class,array('label'=>'Brand Name'))
    ->add('save',SubmitType::class, array('label'=>'Add Brand'))
    ->getForm();

    $form->handleRequest($request);
    if ($form->isSubmitted() && $form->isValid()) {

        $em = $this->getDoctrine()->getManager();
        $em->persist($brand);
        $em->flush();
        return $this->render('coreBundle:layouts:newBrand.html.twig',
            array('form'=>$form->createView(),));
    }

    return $this->render('coreBundle:layouts:newBrand.html.twig',
        array('form'=>$form->createView(),));
}

您需要在表单中添加如下用户关系:

    ->add('user', EntityType::class, array(
         'class' => 'YourBundle:User',
         'choice_label' => 'username' //here you can insert what field you want or you can remove this option
    ))
显然,您需要将
EntityType
添加到控制器的
use

我建议您阅读此链接:

要仅插入当前用户,可以在持久化之前执行此操作

$user = $this->container->get('security.token_storage')->getToken()->getUser();
$brand->setUser($user);

我想在不显示表单上的任何选项的情况下,将user_id插入数据库表中,我是按照以下方式完成的

if ($form->isSubmitted() && $form->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $user = $this->container->get('security.token_storage')->getToken()->getUser();
        $em->persist($brand);
        $brand->setUserId($user);
        $em->flush();
/* */
    }

使用StofDoctrineExtensions捆绑包

use Gedmo\Mapping\Annotation as Gedmo;


 /**
 * @ORM\ManyToOne(targetEntity="User")
 * @Gedmo\Blameable(on="create")
 */
private $creator;

我已经阅读了链接,但我不想在表单上给出选项,我只想插入当前登录的用户,可以在isValid()检查后添加一些内容吗?