Nhận tên người dùng trong mẫu twig người dùng tùy chỉnh


8

Tôi có một mẫu twig cho màn hình nhỏ gọn của người dùng nơi tôi có thể xuất các trường nội dung được xác định. Có cách nào để xuất tên người dùng của người dùng đó không?

Câu trả lời:


10

{{ user.name.0.value }}

sẽ cung cấp cho bạn những gì bạn muốn.

Cách ưa thích là tiêm tên người dùng làm biến trong hàm tiền xử lý. Để làm như vậy, hãy chỉnh nó trong tệp .theme của chủ đề của bạn

<?php

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

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

sau đó trong mẫu người dùng của bạn, bạn có thể sử dụng như {{ username }}.

Biên tập:

Để có được URL đầy đủ:

  • Trong mẫu của bạn {{ path('entity.user.canonical', {'user': user.id}, {}) }}
  • Trong yourtheme_pre process_user (): $variables['user_url'] = Url::fromRoute('entity.user.canonical', ['user' => $account->id()])->setAbsolute()->toString();

2
Cái sau được ưu tiên để hook_user_format_name()chạy để làm bất cứ điều gì mà một trang web có thể muốn cho tên người dùng.
mpdon Arena

URL đầy đủ của trang người dùng có thể được truy xuất theo cách tương tự bằng cách sử dụng tiền xử lý của người dùng không?
pho mát

Phản hồi được cập nhật để bao gồm 2 phương pháp để lấy url trang người dùng
zerolab

Cám ơn rất nhiều về sự giúp đỡ của bạn. Phương thức mẫu hoạt động tốt, nhưng quá trình tiền xử lý cho tôi lỗi sau: Lỗi nghiêm trọng có thể phục hồi: Không thể chuyển đổi đối tượng của lớp Drupal \ Core \ Field \ FieldItemList thành chuỗi trong Drupal \ Core \ Routing \ UrlGenerator-> doGenerate () (dòng 192 lõi / lib / Drupal / Core / Routing / UrlGenerator.php).
pho mát

10

Tên hiển thị không phải là một lĩnh vực bạn có thể cấu hình {{ content }}. Bạn có thể lấy nó trực tiếp từ thực thể người dùng:

{{ user.displayname }}

Tham chiếu cho phương thức php: AccountInterface :: getDisplayName


1
Nên có nhiều phiếu IMO. Đây là tương đương với chức năng tiền xử lý trong câu trả lời được chấp nhận nhưng được gọi từ mẫu Twig.
Cottser

Chắc chắn là giải pháp tốt nhất.
mrlexington

0

Câu trả lời này là đặc biệt để có được tên người dùng trong menu.html.twig

Giải pháp chuyển tên người dùng thông qua macro làm việc cho tôi. Đặt một biến và chuyển nó vào macro là cần thiết vì chúng nằm ngoài phạm vi của macro trong menu.html.twig

{% 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 %}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.