ฉันจะรับค่าเขตข้อมูลดิบในแม่แบบกิ่งไม้ได้อย่างไร


27

myfieldเป็นช่องข้อความธรรมดา {{ content.field_myfield }}แสดงผลฟิลด์ด้วยมาร์กอัพ HTML และเลเบลฟิลด์

ฉันจะแสดงค่าดิบของฟิลด์ได้อย่างไร {{ content.field_myfield.value }}ไม่ทำงาน

คำตอบ:


45

{{ entity.field_name.value }} เพื่อรับค่าดิบที่แท้จริงรวมถึงแท็กและการเข้ารหัส

  • ตัวอย่าง: {{ node.body.value }}
  • ผล: <p>Batman &amp; Robin</p>

{{ content.field_name.0 }} เพื่อรับค่าดิบลบด้วยแท็กและการเข้ารหัส

  • ตัวอย่าง: {{ content.body.0 }}
  • ผล: Batman & Robin

ดิบ

ตัวกรองนี้ควรหลีกเลี่ยงเมื่อเป็นไปได้โดยเฉพาะอย่างยิ่งถ้าคุณกำลังส่งข้อมูลที่ผู้ใช้ป้อน ดูหน้านี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการหลบหนีอัตโนมัติใน Drupal 8

แหล่งที่มา: ตัวกรอง - การแก้ไขตัวแปรในเทมเพลตทวิ

ตัวกรองข้อมูลดิบทำเครื่องหมายว่า "ปลอดภัย" ซึ่งหมายความว่าในสภาพแวดล้อมที่มีการหลบหนีอัตโนมัติเปิดใช้งานตัวแปรนี้จะไม่ถูกหลบหนีหากตัวกรองดิบเป็นตัวกรองสุดท้ายที่ใช้กับมัน

แหล่งที่มา: เอกสารทางการของทวิก


ตัวอย่างเช่นคุณสามารถใช้:

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

ปัญหาของการใช้| striptagsของทวิคือการเข้ารหัสเอนทิตี html สองครั้งไม่ใช่มาร์กอัปดังนั้น & กลายเป็น & และจากนั้น & amp; - เบอร์เดียร์


6
ตัวอย่างเนื้อหาไม่ถูกต้อง ดูdrupal.stackexchange.com/questions/198694/... สิ่งที่คุณสามารถใช้ได้คือ content.field_text.0 จากนั้นคุณจะได้รับเฉพาะส่วนภายในของรายการฟิลด์แรกโดยไม่มีเทมเพลตฟิลด์ ที่มีประโยชน์โดยเฉพาะอย่างยิ่งสำหรับรายการอ้างอิงและอื่น ๆ ที่คุณต้องการให้การส่งออกในรูปแบบที่ไม่คุ้มค่าดิบ
Berdir

2
ดีกว่า แต่ก็ยังไม่ค่อยถูกต้องนัก content.field_myfield | striptags ไม่ทำงานคุณไม่สามารถส่งเรนเดอร์ไปยังที่นั้นได้ คุณต้องแสดงมันก่อนแล้วจึงส่งผ่านสิ่งนั้น striptags และอื่น ๆ ยังมีปัญหากับ & และตัวละครอื่น ๆ ที่สามารถเข้ารหัสได้สองครั้งดังนั้นคุณจำเป็นต้องมี | striptags | raw จริง ๆ
Berdir

2
Just | raw ปล่อยให้แท็ก html และพิมพ์ออกมา ปัญหาเกี่ยวกับ | striptags นั้นเป็นการเข้ารหัส html เอนทิตีสองครั้งไม่ใช่มาร์กอัปดังนั้น & กลายเป็น & amp; จากนั้น & amp; amp;
Berdir

2
นี่ไม่ใช่การหลบหนีสองครั้งคุณสามารถเห็น<และ>แสดงอย่างถูกต้อง เครื่องหมายแอมเปอร์แซนด์อาจมีการหลบหนีเดี่ยวแล้วก่อนที่คุณจะส่งออก แต่คำถามเกี่ยวกับฟิลด์ข้อความธรรมดาไม่ใช่ฟิลด์ข้อความที่จัดรูปแบบซึ่งประมวลผลโดยตัวกรองข้อความ (เพื่อที่จะตอบคำถามนี้ไม่ได้ถามมูลค่าดิบ (ถ้ามีคนต้องการจริงๆนั้น) จะยังคงอยู่ใน.valueและมันจะถูกต้องหลบหนีออกจากทวิกสำหรับเหตุผลด้านความปลอดภัยเดียวเพราะคุณไม่ควรเอาท์พุทฟิลด์ข้อความในรูปแบบที่ไม่ได้กรอง)
4k4

2
ใช่นี่คือสิ่งที่ฉันหมายถึง (auto-escaping = single escaping) ดังนั้นตัวอย่างของคุณสำหรับการแสดงผลค่าของเอนทิตีฟิลด์จะสมบูรณ์แบบโดยไม่มีตัวกรอง striptag เท่านั้นเพราะมันจะสร้างเอาท์พุตคู่ที่น่าเกลียด (BTW &amp;ผลลัพธ์ในตัวอย่างของคุณไม่ถูกต้องสิ่งนี้จะไม่เกิดขึ้นในการสร้างอัตโนมัติยกเว้นว่าเนื้อหาภาคสนามได้รับการยกเว้นหนึ่งครั้งแล้ว)
4k4

5

คุณสามารถใช้โมดูลค่าฟิลด์ทวิกได้ในกรณีนี้ หลังจากติดตั้งโมดูลนี้คุณจะได้รับการเข้าถึงข้อมูลบางส่วนจากอาร์เรย์เรนเดอร์ฟิลด์ สำหรับอดีต

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

ข้อมูลเพิ่มเติมเกี่ยวกับหน้าโครงการ


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.