当前登录的用户-symfony 4

时间:2018-08-12 06:42:03

标签: php symfony doctrine

public function agencyHome(EntityManagerInterface $em)
{
    $repository = $em->getRepository(Ships::class);
    // $ships = $repository->findByOwner($own);
    $ships = $repository->findAll();
    return $this->render('agency/index.html.twig', [
        'ships' => $ships,
    ]);
}

在上面的代码中,我需要将当前登录的用户传递到存储库,以便我可以找到所有相关的“船” 我尝试用$ u = $ this-> getUser()-> getId();没有成功:(

预先感谢您:)

1 个答案:

答案 0 :(得分:3)

在Symfony 4控制器中,您应该能够在控制器中使用$this->getUser()来访问用户,前提是该用户已获得授权。如果没有登录用户,则应返回null

public function agencyHome(EntityManagerInterface $em)
{
    $this->denyAccessUnlessGranted('ROLE_USER');
    $user = $this->getUser();
}

或者,您还应该能够将UserInterface类注入到方法参数中,从而可以获取有关当前登录用户的信息。

public function agencyHome(EntityManagerInterface $em, UserInterface $user)
{
   ...
}

我已经在Symfony 4应用程序上对它们进行了测试,尽管我不记得是否必须在配置中执行其他任何操作,所以请告诉我它们是否有任何问题。

引用自https://symfony.com/doc/current/security.html