2012-07-03 21 views
1

我有一个将TinyMCE实现为Symfony项目的小问题。我让文本编辑器出现并将富文本保存到数据库字段。但是当我在页面上“回显”它时,我会得到所有的HTML标签,而不是富文本本身。有没有一种特殊的方式,我需要“回声”这个,以便它解析HTML?我也希望当人们手动输入html标签时,他们显示为普通文本(以避免人们向他们的帖子添加超链接和其他不需要的东西)。以下是显示:Symfony TinyMCE实现

<p>Test</p> <p><strong>Bold Test</strong></p> <p><span style="text-decoration: underline;"><strong>Underline Text</strong></span></p> 

的这个代替:

测试

大胆试验

下划线文本

+1

什么版本的symfony? – MDrollette

+0

不幸的是,由于客户端的偏好,我被困在了Symfony 1.4中。 :( – djcloud23

+0

@ djcloud23这不是一个可耻的使用SF 1.4!:) – j0k

回答

4

Symfony2中使用输出转义为安全。你可以在这里读到它:http://symfony.com/doc/current/book/templating.html#output-escaping

为了呼应的变量,而不逃避它,你可以这样做:

{{ article.body|raw }} 

为了清理和限制哪些标签可以用于你将要使用HTMLPurifier哪些在这里有一个包:https://github.com/Exercise/HTMLPurifierBundle

为symfony1.2 1.4

Symfony的1.4也有类似的输出转义。你可以用获得的原始数据:

$sf_data->getRaw('varName'); 

,或者如果它是一个对象的一个​​方法,你可以添加ESC_RAW作为参数传递给方法调用(警告:symfony会在这里做一些魔法)

$myObject->getMessage(ESC_RAW); 

more on 1.4 output escaping here

+1

伟大的作品。非常感谢。没有你们,我不知道我会做什么。 :) – djcloud23