4
votes

Lets say I have a Car Entity. Other than typical Car properties I have updatedBy attribute

In sonata I created a CRUD admin page using AppBundle\Admin\CarAdmin.php

Inside the class CarAdmin I have the required methods like configureListFields, configureFormFields, etc...

I'm guessing I need to add updatedBy using the method prePersist($object) but I'm facing that $this->getUser() is not available

The question is, how can I get the logged in user to populate updateBy attribute?

1

1 Answers

6
votes

You can get logged user using $this->getConfigurationPool()->getContainer()->get('security.context')->getToken()->getUser(). In your case you need to do something like this:

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);
}