سيمفوني2:SonataAdminBundle - كيف يمكنني الحصول على الكائن الذي يمثل المستخدم الحالي داخل فئة المسؤول؟

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

سؤال

أستخدم حزمة Sonata-admin.لدي علاقة مع المستخدم (FOSUserBundle) في PageEntity.أريد حفظ المستخدم الحالي الذي يقوم بإنشاء صفحة أو تغييرها.

تخميني هو الحصول على كائن المستخدم في أساليب postUpdate وpostPersist لفئة المسؤول ونقل هذا الكائن في طريقة setUser.

ولكن كيف ندرك هذا؟

في مجموعة جوجل رأيت

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

ولكن هذا لا يعمل

هل كانت مفيدة؟

المحلول

في فئة المسؤول، يمكنك الحصول على تسجيل دخول الحالي في هذا:

giveacodicetagpre.

تحرير بناء على ردود الفعل

وأنت تفعل ذلك هذا؟لأن هذا يجب أن يعمل.

giveacodicetagpre.

نصائح أخرى

بدءًا من Symfony 2.8، يجب عليك استخدام security.token_storage بدلاً من security.context لاسترداد المستخدم.استخدم حقن المنشئ للحصول عليه في المشرف الخاص بك:

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

admin.yml :

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

ثم استخدام $this->tokenStorage->getToken()->getUser() للحصول على المستخدم الحالي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top