Symfony2:SonataAdminBundle - Wie kann ich das Objekt, das den aktuellen Benutzer darstellt, in einer Admin-Klasse abrufen?

StackOverflow https://stackoverflow.com//questions/22069541

Frage

Ich benutze das Sonata-admin Bundle.Ich habe die Beziehung zum Benutzer (FOSUserBundle) in der Seitenentität.Ich möchte den aktuellen Benutzer speichern, der eine Seite erstellt oder ändert.

Ich vermute, dass das Benutzerobjekt in den Methoden postUpdate und postPersist der Admin-Klasse abgerufen und dieses Objekt in der Methode setUser übertragen wird.

Aber wie kann man das realisieren?

In der Google-Gruppe habe ich gesehen

    public function setSecurityContext($securityContext) {
        $this->securityContext = $securityContext;
    }

    public function getSecurityContext() {
        return $this->securityContext;
    }

    public function prePersist($article) {
        $user = $this->getSecurityContext()->getToken()->getUser();

        $appunto->setOperatore($user->getUsername());
    }

aber das funktioniert nicht

War es hilfreich?

Lösung

In der Administratorklasse können Sie den aktuellen angemeldeten Benutzer so erhalten:

generasacodicetagpre.

edit basierend auf dem Feedback

Und das macht es das?Weil dies funktionieren sollte.

generasacodicetagpre.

Andere Tipps

Beginnend mit symfony 2.8 sollten Sie verwenden security.token_storage statt security.context um den Benutzer abzurufen.Verwenden Sie die Konstruktorinjektion, um sie in Ihren Administrator zu integrieren:

public function __construct(
    $code,
    $class,
    $baseControllerName,
    TokenStorageInterface $tokenStorage
) {
    parent::__construct($code, $class, $baseControllerName);
    $this->tokenStorage = $tokenStorage;
}

admin.yml :

    arguments:
        - ~
        - Your\Entity
        - ~
        - '@security.token_storage'

dann benutze $this->tokenStorage->getToken()->getUser() um den aktuellen Benutzer zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top