管理者ユーザーID 15を持っていますが、モデルをロードしてユーザー名とユーザーロールを取得するにはどうすればよいですか?Magento1では、これは以下を使用して可能でした。
$adminuserId = 15;
Mage::getModel('admin/user')->load($adminuserId)->getRole()->getData();
Magento2ではどのように機能しますか?
管理者ユーザーID 15を持っていますが、モデルをロードしてユーザー名とユーザーロールを取得するにはどうすればよいですか?Magento1では、これは以下を使用して可能でした。
$adminuserId = 15;
Mage::getModel('admin/user')->load($adminuserId)->getRole()->getData();
Magento2ではどのように機能しますか?
回答:
これをクラスとコンストラクタに追加する必要があります。
protected $userFactory;
public function __construct(
...
\Magento\User\Model\UserFactory $userFactory,
...
)
{
...
$this->userFactory = $userFactory;
...
}
次に、同じクラスにメソッドを作成してロールデータを取得します。
public function getRoleData($userId)
{
$user = $this->userFactory->create()->load($userId);
$role = $user->getRole();
$data = $role->getData();
return $data;
}
次のコードを使用できます。
$adminuserId = 15;
$user = \Magento\Framework\App\ObjectManager::getInstance()->create(
'Magento\User\Model\User'
);
$user->load($adminuserId);
ただしObjectManager
、コードで直接使用することはお勧めしません。Magento\User\Model\UserFactory
クラスコンストラクターに追加し、それを使用して顧客をロードしてみてください。
例:
class SomeMyClass
{
protected $_userFactory;
public function __construct(
\Magento\User\Model\UserFactory $userFactory
) {
$this->_userFactory = $userFactory;
}
public function someFunction()
{
$adminuserId = 15;
$user = $this->_userFactory->create();
$user->load($adminuserId);
}
}
以下は、magentoのログに記録されたユーザーIDを取得するのに役立ちます。ありがとうございました
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$extensionUser = $objectManager->get('Magento\Backend\Model\Auth\Session')->getUser()->getUsername();
$extensionId = $objectManager->get('Magento\Backend\Model\Auth\Session')->getUser()->getID();