Sonata捆绑,我如何获得当前登录用户?

时间:2017-05-03 22:09:13

标签: symfony sonata-admin symfony-sonata sonata-user-bundle

假设我有一个汽车实体。除了典型的汽车属性,我有updatedBy属性

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

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

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

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

1 个答案:

答案 0 :(得分:3)

您可以使用$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);
}