Magento 2: วิธีการรับรายละเอียดผู้ใช้ผู้ดูแลระบบปัจจุบัน?


คำตอบ:


30

คุณต้องเพิ่มสิ่งนี้ลงในตัวสร้างคลาสของคุณ

protected $authSession;
public function __construct(
    ....
    \Magento\Backend\Model\Auth\Session $authSession, 
    ....
) {
    ....
    $this->authSession = $authSession;
    ....
}

จากนั้นสร้างวิธีการนี้

public function getCurrentUser()
{
    return $this->authSession->getUser();
}

สิ่งนี้จะทำให้คุณเข้าสู่ระบบในปัจจุบันผู้ดูแลระบบ
ภายหลังคุณสามารถได้รับรายละเอียดชอบหรือ$user->getUsername()$user->getEmail()


1
แจ้งให้ทราบล่วงหน้า: หลังจากเพิ่มรหัสเราต้องเรียกใช้bin/magento setup:di:compileมิฉะนั้นจะปรากฏข้อผิดพลาด " ไม่มีเซสชันใดได้รับ "
Key Shang

คำตอบที่สมบูรณ์แบบพร้อมคำอธิบาย !!! +1 :)
SagarPPanchal

@Marius ฉันได้เพิ่มเข้าสู่ระบบเป็นแบ็กเอนด์แบบฟอร์มลูกค้า แต่ฉันต้องการรายละเอียดของผู้ดูแลระบบในหน้ามุมมองผลิตภัณฑ์ซึ่งผู้ดูแลระบบลงชื่อเข้าใช้กับลูกค้า
Masud Shaikh

คุณไม่สามารถเข้าถึงเซสชันผู้ดูแลระบบจากส่วนหน้า
Marius

7

วิธีรับรายละเอียดผู้ดูแลระบบปัจจุบัน

ฉีดเซสชั่นแบ็กเอนด์ในตัวควบคุมของคุณ

public function __construct(
....
\Magento\Backend\Model\Auth\Session $authSession, 
  ....
 ) {
  ....
   $this->authSession = $authSession;
   ....

}

และใช้สิ่งนี้เพื่อรับชื่อผู้ใช้หรืออีเมล

 $this->authSession->getUser()->getUsername();
$this->authSession->getUser()->getEmail();

ไม่จำเป็นต้องฉีดเข้าไปในคอนโทรลเลอร์ของคุณ
MagePsycho

3

คอนโทรลเลอร์ของคุณขยายไปแล้ว\Magento\Backend\App\Actionดังนั้นจึงมีวัตถุการอนุญาตอยู่แล้ว ไม่จำเป็นต้องฉีดเพิ่มเติม ในการรับผู้ใช้ให้ใช้ฟังก์ชันนี้:

    /** @var \Magento\User\Model\User $user*/
    $user = $this->_auth->getUser();

คำตอบอื่น ๆ คือการแนะนำการฉีดซ้ำซึ่งไม่จำเป็น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.