querybuilder - Symfony ingresando al ID del usuario
symfony 3.4 doctrine query (4)
En Symfony2, podemos simplificarlo con este código:
$id = $this->getUser()->getId();
Estoy desarrollando una aplicación que usa Symfony2 y doctrina 2. Me gustaría saber cómo puedo obtener el ID del usuario actualmente conectado.
Esto puede vestirse con el método:
/**
* Get user id
* @return integer $userId
*/
protected function getUserId()
{
$user = $this->get(''security.context'')->getToken()->getUser();
$userId = $user->getId();
return $userId;
}
Y la inducción $ this-> getUserId ()
public function example()
{
print_r($this->getUserId());
}
Puedes obtener la variable con el siguiente código:
$userId = $this->get(''security.context'')->getToken()->getUser()->getId();
Versiones actuales de Symfony (Symfony 4, Symfony> = 3.2)
Desde Symfony> = 3.2 , puede esperar que una implementación de UserInterface
sea inyectada a la acción de su controlador directamente. A continuación, puede llamar a getId()
para recuperar el identificador del usuario:
class DefaultController extends Controller
{
// when the user is mandatory (e.g. behind a firewall)
public function fooAction(UserInterface $user)
{
$userId = $user->getId();
}
// when the user is optional (e.g. can be anonymous)
public function barAction(UserInterface $user = null)
{
$userId = null !== $user ? $user->getId() : null;
}
}
Todavía puede usar el almacenamiento de token de seguridad como en todas las versiones de Symfony desde 2.6. Por ejemplo, en su controlador:
$user = $this->get(''security.token_storage'')->getToken()->getUser();
Tenga en cuenta que el acceso directo Controller::getUser()
mencionado en la siguiente parte de esta respuesta está obsoleto en Symfony 3 y se eliminó en Symfony 4.0
Versiones heredadas de Symfony
La forma más fácil de acceder al usuario solía ser ampliar el controlador base y usar el método abreviado getUser()
(eliminado en Symfony 4):
$user = $this->getUser();
Desde Symfony 2.6 puede recuperar un usuario del almacenamiento de token de seguridad:
$user = $this->get(''security.token_storage'')->getToken()->getUser();
Antes de Symfony 2.6 , el token era accesible desde el servicio de contexto de seguridad:
$user = $this->get(''security.context'')->getToken()->getUser();
Tenga en cuenta que el servicio de contexto de seguridad está en desuso en Symfony 2 y se eliminó en Symfony 3.0.