Làm cách nào để hiển thị chuỗi có chứa HTML trong mẫu twig?


164

Làm cách nào tôi có thể hiển thị một chuỗi chứa các thẻ HTML trong mẫu twig?

Biến PHP của tôi chứa html và văn bản này:

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

Khi tôi làm điều này trong mẫu twig của tôi:

{{ word }}

Tôi nhận được điều này:

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

Tôi muốn điều này thay vào đó:

<b> a word </b>

Có thể có được điều này dễ dàng?


Tôi sẽ không thêm câu hỏi này làm câu trả lời, nhưng một cách tiếp cận khác cho những người tiếp cận câu hỏi này là lưu trữ các giá trị trong Markdown , giống như StackOverflow . Sau đó, bạn có thể tạo bộ lọc Twig với tính năng tự động thoát , vì bạn có thể tin tưởng HTML là an toàn. Không rawcần thiết, và các giá trị được lưu trữ của bạn là con người có thể đọc được!
rybo111

Câu trả lời:


368

Sử dụng từ khóa thô, http://twig.sensiolabs.org/doc/api.html#escaper-extension

{{ word | raw }}

1
Khi thực hiện thay thế nó không làm việc cho tôi. {{từ | thay thế ({(word_to_Vplace): '<b>' ~ (word_to_Vplace) ~ '</ b>'}) | nguyên}} Có ý kiến ​​gì không?
Honesta

2
CẬP NHẬT: Tôi đã giải quyết nó bằng cách thêm nó vào một biến khác bằng cách sử dụng 'set', sau đó {{word | nguyên}} hoạt động tốt.
Honesta

77

Bạn cũng có thể dùng:

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

do đó chỉ có <b>thẻ sẽ được cho phép.


6
Tôi muốn nói phiên bản này là thích hợp hơn nếu bạn chỉ muốn cho phép một vài thẻ.
KalenGi

3
Điều làm tôi vấp ngã là cần phải đặt "nguyên" cuối cùng - tôi sẽ đặt nó lên đầu tiên.
Ben Y

Làm thế nào để bạn cho phép nhiều thẻ?
Riki137

32
{{ word|striptags('<b>,<a>,<pre>')|raw }}

nếu bạn muốn cho phép nhiều thẻ


0

nếu bạn không cần biến, bạn có thể xác định văn bản trong
bản dịch / tin nhắn.en.yaml :
CiteExampleHtmlCode: "<b> my static text </b>"

sau đó sử dụng nó với twig: samples
/ about / index.html.twig
… {{ 'CiteExampleHtmlCode' }}
hoặc nếu bạn cần nhiều trang như tôi:
… {{ 'CiteExampleHtmlCode' | trans }}

Hãy cùng xem https://symfony.com/doc/cản/translation.html để biết thêm thông tin về việc sử dụng bản dịch.

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.