I am trying to create a task manager and I need to be able to get the user id of the user that is currently logged in so that when the task is created the user id is entered into the database as well. I can not get it to work it keeps telling me that the call to undefined function getUser()
i did not think that I had to define it, I thought it was built in.
Can someone help me fix this it would be much appreciated!
here is the function that creates the task
<?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(),
);
}
This is working for me with 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();
}
You don't need to create new user object $user = new User();
,you can the current logged in user object from security context
$user = $this->container->get('security.token_storage')->getToken()->getUser();
$user->getId();
Edit: security.context
is deprecated, use security.token_storage
instead. For more details : https://symfony.com/blog/new-in-symfony-2-6-security-component-improvements
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With