Witam. Proszę o pomoc w rozwiązaniu problemu z przekazaniem użytkownika tworzącego wpis w bazie przy pomocy SonataAdminBundle.
Tworząc wpis w bazie przy pomocy CRUD jest ok, ale nie mogę sobie poradzić w SonataAdmin
W CRUD pobieram w kontrolerze
  1. $user = $this->container->get('security.token_storage')->getToken()->getUser();
  2. $mark->setCreatedUser($user);


Problem rozwiązany, dopiero zauważyłem że próbowałem wstrzyknąć nazwę użytkownika zamiast obiekt.
Zostawiam rozwiązanie, może ktoś będzie potrzebował

app\config\services.yml
  1. services:
  2. my.listener:
  3. class: XXX\YYY\Listener\EntityListener
  4. arguments:
  5. - "@security.token_storage"
  6. tags:
  7. - { name: doctrine.event_listener, event: prePersist }
  8. - { name: doctrine.event_listener, event: preUpdate }


XXX\YYY\Listener\EntityListener.php
  1. <?php
  2.  
  3. namespace XXX\YYY\Listener;
  4.  
  5. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterfa
    ce;
  6. use Doctrine\ORM\Event\LifecycleEventArgs;
  7.  
  8. class EntityListener
  9. {
  10. private $tokenStorage;
  11.  
  12. public function __construct(TokenStorageInterface $tokenStorage)
  13. {
  14. $this->tokenStorage = $tokenStorage;
  15. }
  16.  
  17. public function prePersist(LifeCycleEventArgs $args)
  18. {
  19. $entity = $args->getEntity();
  20. $entity->setCreatedUser($this->tokenStorage->getToken()->getUser());
  21. }
  22.  
  23. public function preUpdate(LifeCycleEventArgs $args)
  24. {
  25. $entity = $args->getEntity();
  26. $entity->setUpdatedUser($this->tokenStorage->getToken()->getUser());
  27.  
  28. }
  29. }


w encji

  1.  
  2. namespace XXX\YYY\Entity;
  3.  
  4. use Doctrine\ORM\Mapping as ORM;
  5.  
  6. /**
  7.  *
  8.  * @ORM\Entity
  9.  * @ORM\HasLifecycleCallbacks
  10.  *
  11.  * @ORM\Table(name="name_table")
  12.  * @ORM\Entity(repositoryClass="XXX\YYY\Repository\name_table_Repository")
  13.  */
  14. class name_class
  15. {
  16. ...
  17. /**
  18.   * @ORM\PrePersist
  19.   */
  20. public function onPrePersist()
  21. {
  22. $this->createdAt = new \DateTime("now");
  23. }
  24.  
  25. /**
  26.   * Gets triggered every time on update
  27.   *
  28.   * @ORM\PreUpdate
  29.   */
  30. public function onPreUpdate()
  31. {
  32. $this->updatedAt = new \DateTime("now");
  33. }
  34.  
  35. ....