奏鸣曲捆绑包,我怎样才能获得当前登录的用户?

Posted

技术标签:

【中文标题】奏鸣曲捆绑包,我怎样才能获得当前登录的用户?【英文标题】:Sonata bundle, how can I get current logged in user? 【发布时间】:2017-10-01 22:05:08 【问题描述】:

假设我有一个汽车实体。除了典型的汽车属性,我已经更新了属性

在奏鸣曲中,我使用 AppBundle\Admin\CarAdmin.php 创建了一个 CRUD 管理页面

在 CarAdmin 类中,我有所需的方法,如 configureListFields、configureFormFields 等......

我猜我需要添加 updatedBy 使用方法 prePersist($object) 但我面临 $this->getUser() 不可用

问题是,如何让登录用户填充 updateBy 属性?

【问题讨论】:

【参考方案1】:

您可以使用$this->getConfigurationPool()->getContainer()->get('security.context')->getToken()->getUser() 获取登录用户。在您的情况下,您需要执行以下操作:

public function setUpdatedByAttribute($car)

    $user = $this->getConfigurationPool()->getContainer()->get('security.context')->getToken()->getUser();
    $car->setUpdatedBy($user);


public function prePersist($car)

    $this->setUpdatedByAttribute($car);


public function preUpdate($car)

    $this->setUpdatedByAttribute($car);

【讨论】:

我有各种实体,有没有办法可以创建控制器并在 CarAdmin.php 中添加控制器?这样我就可以在控制器中完成所有用户操作并返回我需要的内容。 @CookieMonster 你可以做的是创建一个可以填充这些字段的服务。然后有一个您的实体实现的接口。将服务添加到您的管理服务并调用服务中的方法。 好答案!但是使用 Symfony 4 它对我不起作用。我可以通过使用其他服务来获取用户:->get('security.token_storage') 而不是 ->get('security.context') 如果 ->get('security.token_storage')->getToken() 在任何变体中返回 null,会发生什么情况? ***.com/questions/63297123/…

以上是关于奏鸣曲捆绑包,我怎样才能获得当前登录的用户?的主要内容,如果未能解决你的问题,请参考以下文章

sh 我怎样才能获得当前的工作目录?

配置文件编辑时奏鸣曲用户捆绑错误

如何获得 Wix Burn 捆绑包以阻止升级

我怎样才能在织物中获得 Twitter 个人资料照片?(Unity3d)

奏鸣曲包的作曲家原型

Sonata Bundle 之间的依赖关系