วิธีการแสดงสตริงที่มี HTML ในแม่แบบกิ่งไม้?


164

ฉันจะแสดงสตริงที่มีแท็ก HTML ในแม่แบบกิ่งไม้ได้อย่างไร

ตัวแปร PHP ของฉันมี HTML และข้อความนี้:

$word = '<b> a word </b>';

เมื่อฉันทำสิ่งนี้ในแม่แบบกิ่งไม้ของฉัน:

{{ word }}

ฉันได้รับสิ่งนี้:

&lt;b&gt; a word &lt;b&gt;

ฉันต้องการสิ่งนี้แทน:

<b> a word </b>

เป็นไปได้ไหมที่จะได้สิ่งนี้อย่างง่ายดาย?


ฉันจะไม่เพิ่มนี้เป็นคำตอบ แต่เป็นวิธีทางเลือกสำหรับคนที่ถึงคำถามนี้คือการเก็บค่าในMarkdownเช่นStackOverflow ไม่ จากนั้นคุณสามารถสร้างตัวกรอง Twig ด้วยการยกเว้นโดยอัตโนมัติเนื่องจากคุณสามารถเชื่อถือ HTML ได้อย่างปลอดภัย ไม่rawจำเป็นและค่าที่คุณเก็บไว้นั้นสามารถอ่านได้โดยมนุษย์!
rybo111

คำตอบ:


368

ใช้คำหลักดิบhttp://twig.sensiolabs.org/doc/api.html#escaper-extension

{{ word | raw }}

1
เมื่อทำการแทนที่จะไม่ทำงานสำหรับฉัน {{word | แทนที่ ({(word_to_replace): '<b>' ~ (word_to_replace) ~ '</b>'}) | raw}} ความคิดใด ๆ
Honesta

2
อัปเดต: ฉันแก้ไขได้โดยเพิ่มลงในตัวแปรอื่นโดยใช้ 'set' จากนั้น {{word | raw}} ทำงานได้ดี
Honesta

77

คุณยังสามารถใช้:

{{ word|striptags('<b>')|raw }}

เพื่อ<b>อนุญาตให้แท็กเท่านั้น


6
ฉันว่ารุ่นนี้จะดีกว่าถ้าคุณต้องการอนุญาตให้แท็กเพียงไม่กี่
KalenGi

3
สิ่งที่ทำให้ผมสะดุดก็ต้องใส่ "ดิบ" ครั้งสุดท้าย - ฉันจะใส่มันก่อน
Ben Y

คุณอนุญาตหลายแท็กได้อย่างไร
Riki137


0

หากคุณไม่ต้องการตัวแปรคุณสามารถกำหนดข้อความในการ
แปล / messages.en.yaml :
CiteExampleHtmlCode: "<b> my static text </b>"

จากนั้นใช้กับ twig:
templates / about / index.html.twig
… {{ 'CiteExampleHtmlCode' }}
หรือหากคุณต้องการมัลติเลเยอร์เช่นฉัน:
… {{ 'CiteExampleHtmlCode' | trans }}

มาดูhttps://symfony.com/doc/current/translation.htmlเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้การแปล

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