[英]Getting the user id from logged in user in FOSUserBundle
我正在尝试创建一个任务管理器,我需要能够获取当前登录用户的用户ID,以便在创建任务时,用户ID也会输入到数据库中。 我不能让它工作它一直告诉我call to undefined function getUser()
我不认为我必须定义它,我认为它是内置的。
有人可以帮我解决这个问题,我将不胜感激!
这是创建任务的函数
<?php
namespace Starnes\TaskBundle\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Starnes\TaskBundle\Entity\Task;
use Starnes\TaskBundle\Form\TaskType;
use Starnes\UserBundle\Entity\User;
/**
* Task controller.
*
* @Route("/task")
*/
class TaskController extends Controller
{
/**
* Lists all Task entities.
*
* @Route("/", name="task")
* @Method("GET")
* @Template()
*/
public function indexAction()
{
$em = $this->getDoctrine()->getManager();
$entities = $em->getRepository('StarnesTaskBundle:Task')->findAll();
return array(
'entities' => $entities,
);
}
/**
* Creates a new Task entity.
*
* @Route("/", name="task_create")
* @Method("POST")
* @Template("StarnesTaskBundle:Task:new.html.twig")
*
*/
public function createAction(Request $request)
{
$user = new User();
$userID = $user->getUser()->getId();
$entity = new Task();
$form = $this->createCreateForm($entity);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$entity->setUserId($userID);
$em->flush();
return $this->redirect($this->generateUrl('task_show', array('id' => $entity->getId())));
}
return array(
'entity' => $entity,
'form' => $form->createView(),
);
}
只是写作
$user = $this->getUser()->getId();
您获得当前用户的ID
您不需要创建新的用户对象$user = new User();
,您可以从安全上下文中获取当前登录的用户对象
$user = $this->container->get('security.token_storage')->getToken()->getUser();
$user->getId();
编辑: security.context
已被弃用,使用security.token_storage
代替。 有关详细信息,请访问: https : //symfony.com/blog/new-in-symfony-2-6-security-component-improvements
Symfony 3对我有用
if( $this->container->get( 'security.authorization_checker' )->isGranted( 'IS_AUTHENTICATED_FULLY' ) )
{
$user = $this->container->get('security.token_storage')->getToken()->getUser();
$username = $user->getUsername();
}
你可以使用这个变量:{{app.user.id}}。
它显示已连接的用户ID,如果没有连接则显示任何内容
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.