2011-08-19 30 views
6

Tôi đã quản lý để xây dựng một trang sẽ hiển thị dữ liệu từ cơ sở dữ liệu động. Tuy nhiên, mã này được lưu trong cơ sở dữ liệu:Cách hiển thị thẻ HTML được lưu trong cơ sở dữ liệu sử dụng Symfony 2 và Twig

<p>This is the content for the radio <a href="#">page</a>.</p> 

Hiển thị như thế này:

<p>This is the content for the radio <a href="#">page</a>.</p> 

Các thẻ HTML không trả lại. Tôi hiểu rằng Symfony (vì mục đích bảo mật) ám chỉ bất kỳ mã HTML nào như thế này vì lý do bảo mật. Tôi muốn Symfony (rõ ràng) để hiển thị các thẻ HTML này. Làm thế nào tôi có thể đạt được điều này chỉ cho mục đích này, để Symfony vẫn làm sạch bất kỳ thẻ HTML nào được lưu vào cơ sở dữ liệu ở nơi khác trên trang web?

Để biết thông tin của bạn là tốt, đây là đoạn code mà tôi đang sử dụng để kéo dữ liệu từ cơ sở dữ liệu:

public function mainpageAction($slug) 
{ 

    $content = $this->getDoctrine() 
     ->getRepository('SiteMainBundle:Content') 
     ->find($slug); 

    if (!$content) { 
     throw $this->createNotFoundException('No product found for slug '.$slug); 
    } 

    return $this->render('SiteMainBundle:Default:page.html.twig', array('content' => $content, 'slug' => $slug)); 
} 

Ngoài ra, chỉ để tôi có thể tìm hiểu thêm về Symfony, là vẽ của HTML thẻ chỉ là công việc duy nhất của PHP hoặc nó có thể được trả lại đúng cách sử dụng Twig?

Rất cám ơn!

Trả lời

22

Nếu bạn muốn thực hiện điều đó, bạn cần sử dụng bộ lọc raw trong mẫu ghép. Giống như được mô tả trong tài liệu hướng dẫn, bộ lọc thô đánh dấu giá trị là an toàn có nghĩa là trong môi trường có tính năng thoát tự động, biến này sẽ không bị thoát nếu raw là bộ lọc cuối cùng được áp dụng cho nó.

Trong trường hợp của bạn, đó là: {{ content | raw }}

+0

Cảm ơn rất nhiều! Hoạt động rực rỡ :) – mickburkejnr

+0

nó không hoạt động khi tôi đưa ra một

+0

Bạn có chắc chắn rằng nó không hoạt động? Trên thực tế, tôi sử dụng bộ lọc '' raw'' để hiển thị HTML thuần túy và cờ được hiển thị chính xác. – egeloen

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