Làm thế nào bạn có thể kết xuất các trường từ một tham chiếu thực thể trong các mẫu nút? [Drupal 8]


8

Đối với ngữ cảnh, tôi đang xử lý hai loại nội dung: article và team_profile. Trong các nút bài viết, chúng tôi có một trường tham chiếu thực thể kéo một nút team_profile để làm thông tin tác giả.

Tôi sẽ chỉ hiển thị thực thể với chế độ hiển thị mới, nhưng thiết kế của chúng tôi có ảnh được đặt trực tiếp bên trên ngày và tên được xuất bản, bên cạnh nhau: ảnh chụp màn hình thiết kế thông tin tác giả

Trong D7 tôi sẽ dpm($content)và đi sâu vào thông tin nút, nhấp đúp chuột và kéo phần còn lại của đường dẫn tham chiếu. Tôi đang sử dụng kint và có thể nhổ các nội dung tham chiếu thực thể đến một mức nhất định , {{ kint(content.field_blog_author[0]['#node']) }}. Cấp độ tiếp theo tôi muốn truy cập là values, nhưng thử những điều sau đây mang lại cho tôi NULL:

  • content.field_blog_author[0]['#node’][‘values’]
  • content.field_blog_author[0]['#node’]=>values
  • content.field_blog_author[0]['#node’]->values

Cuối cùng tôi muốn kết xuất các trường titlefield_team_imagetừ nút được tham chiếu ( xem ở đây trong đầu ra kint ). Tôi không tìm thấy thông tin về đây là tài liệu hoặc bằng cách tìm kiếm. Ai đó sẽ giúp tôi có được unstuck?

Câu trả lời:


12

#node thực sự có nút hiện tại.

Nếu bạn muốn truy cập các trường và giá trị của chúng, hãy bắt đầu bằng nút, không phải nội dung, đó là mảng kết xuất với các trường được định cấu hình.

Bạn có thể truy cập các thực thể tham chiếu như thế này {{ node.field_blog_author.entity }}.

Từ đó, bạn có thể tiếp tục một lần nữa vào trường của thực thể được tham chiếu mà bạn muốn hiển thị. Bạn có thể thử gọi phương thức xem, với chế độ xem với cài đặt mặc định, bạn cũng có thể chuyển chế độ xem dưới dạng chuỗi cho nó hoặc cài đặt hiển thị mảng (không chắc chắn về cú pháp chính xác cho điều đó trong twig).

Ngoài ra, tài liệu tham khảo tiêu chuẩn của tôi, xem http://wizzlern.nl/drupal/drupal-8-entity-cheat-sheet để biết tổng quan tuyệt vời về các thực thể nội dung, cách chúng được cấu trúc và cách truy cập các giá trị. Hầu hết điều đó cũng áp dụng cho twig.

Và cuối cùng, khi cố gắng tìm hiểu những gì trong một thực thể nội dung, hãy sử dụng node.toArray (), cung cấp cho bạn một biểu diễn mảng rất gần với cách bạn có thể truy cập nó như một đối tượng. Trong khi cấu trúc bên trong khá khác nhau.


Cảm ơn bạn, Berdir. {{ kint(node.field_blog_author.entity) }}không tạo ra một mảng đẹp của nút được tham chiếu, nhưng bây giờ tôi không thể đi sâu hơn. {{ kint(node.field_blog_author.entity.title) }}, ví dụ, phá vỡ trang, không tải tài nguyên hoặc bất cứ thứ gì qua khu vực tiêu đề. Tương tự cho nidhoặc những người khác. Chỉ để cười khúc khích, cố gắng đưa thực thể được tham chiếu vào nội dung nút {{ node.field_blog_author.entity }}trả về một thông báo lỗi dường như nói rằng nút không thể được hiển thị trong mẫu như thế.
alexbea

Có vẻ như đây có thể là những giá trị được bảo vệ . Nghe có đúng không? Có lẽ tôi cần tạo một chế độ xem cho chỉ ảnh sau đó sử dụng chế độ hiển thị "nhãn" cho tên.
alexbea

Vâng, họ được bảo vệ. Như tôi đã nói, sử dụng toArray (), cũng hoạt động trên node.field_blog_ Author.entity.title là một đối tượng trường, nếu bạn muốn định giá, bạn cần ... entity.title.value. Hãy chắc chắn để đọc bảng cheat tham chiếu, nó giải thích rất nhiều những điều đó.
Berdir

1
Tôi đánh giá cao sự giúp đỡ. Tuy nhiên, tôi không thực sự hiểu cách sử dụng thông tin trong bảng cheat. Thêm .valueđã làm việc trong trường hợp này và trả lời câu hỏi ban đầu của tôi.
alexbea

@berdir url trang web bị phá vỡ.
chalo
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.