سيمفوني2:SonataAdminBundle - كيف يمكنني الحصول على الكائن الذي يمثل المستخدم الحالي داخل فئة المسؤول؟
-
23-12-2019 - |
سؤال
أستخدم حزمة 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()
للحصول على المستخدم الحالي.
لا تنتمي إلى StackOverflow