php - 获取当前登录用户 - symfony 4

标签 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();没有成功:(

提前谢谢您:)

最佳答案

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

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

或者,您还应该能够将 UserInterface 类注入(inject)到方法参数中,通过该类您可以获得有关当前登录用户的信息。

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

我已经在 Symfony 4 应用程序上测试了这些,但我不记得是否需要在配置中执行其他操作,因此如果您对它们有任何问题,请告诉我。

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

关于php - 获取当前登录用户 - symfony 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51806390/

相关文章:

javascript - Bootstrap 下拉菜单与 php 和数据库

php - 无法快速发布请求

symfony - 如何显示 404 错误页面而不是 Symfony4 中的错误

php - 在doctrine中插入json不起作用

php - 如何仅在 Doctrine 中按日期部分分组

php - 如何在 PHP 中禁用 "referer"到 error_log 的附加?

php - 如何在遗留应用程序中使用 Symfony 2 容器

php - 如何更改默认主义实体方案?

mysql - Symfony Doctrine (mysql)锁逻辑

php - 使用 allocateIdentifier() 更新对象而不是使用 Doctrine 插入