2013-01-15 36 views
11

Tôi đang hiển thị một số biến lấy ra trong cơ sở dữ liệu của tôi sử dụng Twig:Symfony2: Auto htmlentities sử dụng cành

<p>{{ my_variable }}</p> 

Vấn đề là biến này có thể chứa các thẻ html, chẳng hạn như "<br />".

Twig dường như tự động gọi một số chức năng giống như htmlentities khi hiển thị các biến.

Có cách nào để vô hiệu hóa nó để khi tôi hiển thị một biến có chứa "Hello<br />world !" Tôi nhận được:

Hello 
world ! 

hơn:

Hello<br />world ! 

Cảm ơn

Trả lời

20

Sử dụng {{ my_variable|raw }} để ngăn chặn my_variable khỏi bị tự động thoát.

tài liệu Xem Twig: http://twig.sensiolabs.org/doc/filters/raw.html

+0

Chỉ cần những gì tôi cần, Google đã không cho tôi bộ lọc đó ... hoặc có thể tôi không thực hiện tìm kiếm tốt;) Cảm ơn anyway (Tôi chấp nhận sau 10 phút) – Yoot

+0

wow, tôi gần đây đã yêu Symfony2 và vì những thứ như thế này. Rất dễ sử dụng. – Donovan

1

thậm chí tốt hơn: {{ '<br />|raw('html') }} để tránh tự thoát thứ nhạy cảm khác.

+0

'html' trông giống như chiến lược mặc định của' nguyên': https://github.com/fabpot/Twig/blob/master/lib/Twig/Extension/Escaper.php Bạn có thể cung cấp một số tài liệu hoặc ví dụ về điều này không sử dụng? – Damien

+0

bạn cũng có thể chuyển 'js' chẳng hạn, hoặc bất kỳ cuộc gọi nào. – Florian

2

Hãy thử sử dụng này

{% autoescape false %}{{ my_variable}}{% endautoescape %} 
+0

đã giúp tôi cho các biến chứa thực thể html –

0

Nếu bạn chỉ muốn sử dụng linebreaks trong văn bản được lưu trữ trong cơ sở dữ liệu của bạn, nhưng không quan tâm để sử dụng html, bạn cũng có thể sử dụng bộ lọc nl2br như trong {{ var|nl2br }}. Cho phép bạn sử dụng ký tự chuỗi ký tự dòng \n trong văn bản của bạn. Bộ lọc chuyển đổi nó thành <br/>

Các vấn đề liên quan