Php 将登录的用户数据存储在sonata管理包中

Php 将登录的用户数据存储在sonata管理包中,php,symfony,sonata-admin,Php,Symfony,Sonata Admin,在Sonata管理包中,有一个注册表。管理员和超级管理员可以使用该注册表创建用户。一切正常。但是,现在我想跟踪谁(管理员或超级管理员id)创建了这个用户。所以我想存储登录的用户id。 在商业实体中: /** * Set createdBy * * @param integer $createdBy * @return Commercant */ public function setCreatedBy($createdBy) { $this->createdBy = $createdBy

在Sonata管理包中,有一个注册表。管理员和超级管理员可以使用该注册表创建用户。一切正常。但是,现在我想跟踪谁(管理员或超级管理员id)创建了这个用户。所以我想存储登录的用户id。 在商业实体中:

/**
* Set createdBy
*
* @param integer $createdBy
* @return Commercant
*/
public function setCreatedBy($createdBy)
{
 $this->createdBy = $createdBy;

 return $this;
}
/**
* Get createdBy
*
* @return integer
*/
public function getCreatedBy()
{
  return $this->createdBy;
}
在sonata管理类中,我放置了以下代码:

 public function preUpdate($commercant)
{
 $objUser = $this->getConfigurationPool()->getContainer()->get('security.context')->getToken()->getUser();
    if(!empty($objUser)) {
        $commercant->setCreatedBy($objUser->getId());
    }

}
但什么也没发生

试试这个:

public function prePersist($commercant)
{
    parent::prePersist($commercant);

    $isSuperAdmin = $this->getConfigurationPool()->getContainer()->get('security.context')->isGranted('ROLE_SUPER_ADMIN');
    $isAdmin = $this->getConfigurationPool()->getContainer()->get('security.context')->isGranted('ROLE_ADMIN');
    if($isAdmin || $isSuperAdmin) {
        $objUser = $this->getConfigurationPool()->getContainer()->get('security.context')->getToken()->getUser();
        if(!empty($objUser)) {
            $commercant->setCreatedBy($objUser->getId());
        }
    }

}

嘿,你有没有试过?如果你不介意的话,我正在寻求帮助,我将不胜感激!