Skip to main content

How to get the current user or load a user using a uid value.

$current_user = \Drupal::currentUser();
$user = \Drupal\user\Entity\User::load($current_user->id());

or just use

$user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());

An example of this in action

/**
 * Change the display of the user's name.
 *
 * @param int $uid
 *   User id.
 *
 * @return string
 *   User name.
 */
function change_users_name($uid) {
	// status of the current user
	$logged_in = \Drupal::currentUser()->isAuthenticated();
	$author = \Drupal\user\Entity\User::load($uid);
	$first_name = $author->get('field_firstname')->value;
	$last_name = $author->get('field_lastname')->value;
	$user_url = Url::fromRoute('user.page', ['user' => $author->id()]);
	$link = Link::fromTextAndUrl($last_name, $user_url)->toString();

	return ($logged_in) ? $link : $first_name . " " . $last_name;
}

 

This can be further reduced where the line

$author = \Drupal\user\Entity\User::load($uid);

Becomes

$author = User::load($uid);

To make this change, you'll need to add at the top of the file

<?php

// ... other use references ... //
use Drupal\user\Entity\User;

 

Related articles