it-swarm.com.de

Holen Sie sich den Benutzernamen in benutzerdefinierten Benutzer twig Vorlage

Ich habe eine twig - Vorlage für die kompakte Anzeige eines Benutzers, in der ich die definierten Inhaltsfelder ausgeben kann. Gibt es eine Möglichkeit, den Benutzernamen dieses Benutzers auszugeben?

8
cheesetriple

{{ user.name.0.value }}

sollte dir geben, was du willst.

Der bevorzugte Weg ist das Einfügen des Benutzernamens als Variable in eine Vorverarbeitungsfunktion. Passen Sie dazu das in der .theme-Datei Ihres Themas an

<?php

/**
 * Implements hook_preprocess_user().
 */
function yourtheme_preprocess_user(&$variables) {
  /** @var User $account */
  $account = $variables['elements']['#user'];

  $variables['username'] = $account->getDisplayName();
}

dann können Sie dies in Ihrer Benutzervorlage als {{ username }} verwenden.

Bearbeiten:

So erhalten Sie die vollständige URL:

  • In Ihrer Vorlage {{ path('entity.user.canonical', {'user': user.id}, {}) }}
  • In yourtheme_preprocess_user (): $variables['user_url'] = Url::fromRoute('entity.user.canonical', ['user' => $account->id()])->setAbsolute()->toString();
10
zerolab

Der Anzeigename ist kein Feld, das Sie in {{ content }} Konfigurieren können. Sie können es direkt von der Benutzerentität erhalten:

{{ user.displayname }}

Referenz für die PHP-Methode: AccountInterface :: getDisplayName

10
4k4

Diese Antwort dient speziell dazu, den Benutzernamen in menu.html.twig abzurufen

Die Lösung, den Benutzernamen durch ein Makro zu übergeben, hat bei mir funktioniert. Das Festlegen und Übergeben einer Variablen an das Makro ist erforderlich, da diese außerhalb des Bereichs des Makros in menu.html.twig liegen

{% set username = user.account.name %}
{{ menus.menu_links(items, attributes, 0,logged_in,username) }}
{% macro menu_links(items, attributes, menu_level,logged_in,username) %}
{{ username }}
{% endmacro %}
0
Jignesh Rawal