Làm cách nào để có được giá trị trường thô trong mẫu twig?


27

myfield là một trường văn bản đơn giản. {{ content.field_myfield }}kết xuất trường với đánh dấu HTML và nhãn trường.

Làm cách nào để hiển thị giá trị thô của trường? {{ content.field_myfield.value }}không hoạt động.

Câu trả lời:


45

{{ entity.field_name.value }} để có được giá trị thô thực sự, bao gồm các thẻ và mã hóa.

  • Thí dụ: {{ node.body.value }}
  • kết quả: <p>Batman &amp; Robin</p>

{{ content.field_name.0 }} để lấy các giá trị thô trừ các thẻ và mã hóa.

  • Thí dụ: {{ content.body.0 }}
  • kết quả: Batman & Robin

nguyên

Nên tránh bộ lọc này bất cứ khi nào có thể, đặc biệt nếu bạn xuất dữ liệu có thể do người dùng nhập. Xem trang này để biết thêm thông tin về tự động thoát trong Drupal 8.

nguồn: Bộ lọc - Sửa đổi biến trong mẫu Twig

Bộ lọc thô đánh dấu giá trị là "an toàn", điều đó có nghĩa là trong môi trường có chế độ thoát tự động được bật, biến này sẽ không được thoát nếu raw là bộ lọc cuối cùng được áp dụng cho nó

nguồn: tài liệu chính thức của Twig


Ví dụ: bạn có thể sử dụng:

{{ node.body.value|striptags }}
{{ paragraph.field_text.value|striptags }}

Vấn đề với việc sử dụng | thoát y của twig là mã hóa kép các thực thể html, không phải đánh dấu, vì vậy & trở thành & và sau đó & amp; - Berdir


6
các ví dụ nội dung không chính xác. Xem drupal.stackexchange.com/questions/198694/iêu . Những gì bạn có thể sử dụng là content.field lòng.0, sau đó bạn chỉ nhận được phần bên trong của mục trường đầu tiên, không có các mẫu trường. Điều đó đặc biệt hữu ích cho các danh sách, tài liệu tham khảo, v.v., nơi bạn muốn đầu ra được định dạng, không phải giá trị thô
Berdir

2
Tốt hơn, nhưng vẫn không hoàn toàn chính xác. content.field_myfield | thoát y không hoạt động, bạn không thể truyền một mảng kết xuất đến đó. Bạn sẽ cần phải kết xuất nó trước và sau đó vượt qua nó. thoát y và vân vân cũng có vấn đề với & và các ký tự khác có thể được mã hóa hai lần, vì vậy bạn thực sự cần một | thoát y | thô thực sự.
Berdir

2
Chỉ cần | thô để lại các thẻ html và in chúng. Vấn đề với | thoát y sau đó là mã hóa kép các thực thể html, không phải đánh dấu, vì vậy & trở thành & amp; và sau đó & amp; amp;
Berdir

2
Đây không phải là thoát kép, bạn có thể thấy điều đó <>được hiển thị chính xác. Dấu và có lẽ đã được thoát một lần duy nhất trước khi bạn xuất nó. Nhưng câu hỏi là về một trường văn bản đơn giản , không phải là một trường văn bản có định dạng được xử lý bởi các bộ lọc văn bản. (Để trả lời câu hỏi không hỏi này, giá trị nguyên (nếu ai đó thực sự muốn điều đó) vẫn sẽ ở .valuevà nó sẽ là một cách chính xác đơn bỏ trốn bằng cách Twig, vì lý do an ninh, bởi vì bạn không bao giờ nên ra một trường văn bản được định dạng không lọc)
4k4

2
Vâng, đây là những gì tôi muốn nói (tự động thoát = thoát đơn). Vì vậy, các ví dụ của bạn để xuất các giá trị trường thực thể là hoàn hảo, chỉ khi không có bộ lọc thoát, bởi vì điều này sẽ tạo ra đầu ra thoát kép xấu xí. (BTW &amp;đầu ra trong ví dụ của bạn là sai, điều này không xảy ra trong tự động định hình trừ khi nội dung trường đã được thoát một lần).
4k4

5

Bạn có thể sử dụng mô-đun Twig Field Value trong trường hợp này. Sau khi cài đặt mô-đun này, bạn sẽ có quyền truy cập vào dữ liệu một phần từ mảng kết xuất trường. Dành cho người cũ

{{ content.field_name|field_value }}
content.field_image|field_target_entity.uri.value

vv Thông tin thêm về trang dự án


1
{{ content.body | raw }} 

lấy giá trị trường thô trong mẫu twig

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.