Я пытаюсь создать диспетчер задач, и мне нужно получить идентификатор пользователя пользователя, который в настоящее время зарегистрирован, чтобы при создании задачи в базу данных также вводился идентификатор пользователя. Я не могу заставить его работать, он продолжает говорить мне, что 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 = new User();
, вы можете войти в текущий пользовательский объект из контекста безопасности
$user = $this->container->get('security.context')->getToken()->getUser(); $user->getId();
просто писать
$user = $this->getUser()->getId();
Вы получаете идентификатор текущего пользователя
Это работает для меня с 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}}.
Он отображает подключенный идентификатор пользователя или ничего, если никто не подключен