function ContactHooks::menuLocalTasksAlter

Same name and namespace in other branches
  1. 11.x core/modules/contact/src/Hook/ContactHooks.php \Drupal\contact\Hook\ContactHooks::menuLocalTasksAlter()

Implements hook_menu_local_tasks_alter().

Hides the 'Contact' tab on the user profile if the user does not have an email address configured.

Attributes

#[Hook('menu_local_tasks_alter')]

File

core/modules/contact/src/Hook/ContactHooks.php, line 109

Class

ContactHooks
Hook implementations for contact.

Namespace

Drupal\contact\Hook

Code

public function menuLocalTasksAlter(&$data, $route_name) : void {
  if ($route_name == 'entity.user.canonical' && isset($data['tabs'][0])) {
    foreach ($data['tabs'][0] as $href => $tab_data) {
      if ($href == 'entity.user.contact_form') {
        $link_params = $tab_data['#link']['url']->getRouteParameters();
        $account = User::load($link_params['user']);
        if (!$account->getEmail()) {
          unset($data['tabs'][0]['entity.user.contact_form']);
        }
      }
    }
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.