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
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()检查后添加一些内容吗?