我使用FOS用户软件包和LdapBundle为我的用户连接到网站。 我创建了一个表单,我想跟踪谁添加了一个条目。所以我想将添加/修改该内容的用户保存到数据库中。
最好的方法是什么?由于它将成为一个表单,我的第一个想法是使用当前用户ID在我的FormType上创建一个隐藏字段,但我认为这是安全的。
任何建议都将不胜感激。
谢谢!
答案 0 :(得分:1)
我建议反对隐藏的字段,因为它可以很容易地操纵。
更好的方法是将SecurityContext
注入到表单中,并通过POST_SUBMIT
事件将登录用户绑定到该对象。
答案 1 :(得分:1)
我不知道ldapBundle但是当我想保存例如我在控制器中拍摄的照片时
$user=$this->security_context->getToken()->getUser();
$form = $this->createForm(new PhotoType(), $photo )
$request = $this->get('request');
if ($request->getMethod() == 'POST') {
$form->handleRequest($request);
if ($form->isValid()) {
$photo->setUser($user);
$em = $this->getDoctrine()->getManager();
$em->persist($photo);
$em->flush();
....
它是一个基本代码,您还必须检查用户是否存在执行持久性:if($user) ...