我试图将TinyMCE用作网络表单的一部分。集成工作正常,但是一旦提交表单,当然会验证数据。
如果验证评估为false,例如某些其他输入尚未填写,那么我当然不希望用户重新输入所有数据。所以我将Tinymce内容传递回重新加载的视图。
出现以下问题:
Tinymce Textarea的内容:测试
重新加载后Tinymce中的内容:<p>test</p>
每次都会添加一个额外的段落作为包装。
我希望Tinymce处理输入,就像它被插入到html视图中一样,这样纯文本视图就可以了,并且不会插入额外的段落。
我怎样才能做到这一点?
感谢您的回复。这只是一个示例输入,我肯定需要一个RTE,因为我正在构建一些自定义的CMS功能。我现在使用html_entity_decode(),html来自数据库,是的,我确实过滤了用户输入(基本上是CI,但我自己测试了XSS,只是为了确保......)。我不确定我是否以最优雅的方式做到这一点......但以下似乎对我来说很好:
JS Part:
<script type="text/javascript" src="<?php echo base_url();?>tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
$(document).ready(function(){
tinyMCE.init({
theme : "advanced",
mode : "textareas",
theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
entity_encoding : "raw",
content_css : "<?php echo base_url();?>xcss/standard_tinymce.css",
});
});
</script>
生成表单textarea(CI方式):
echo form_textarea('content', html_entity_decode($content));
多数民众赞成。
输入如:
<p><strong>test</strong></p><p>bla bla bla</p>
如果它存储在$ content中,现在将以如下方式显示:
测试
bla bla bla如果您提交表单,那么后期数据将再次等于$ content。这正是你应该考虑检查注射或XSS攻击的后期数据的点,所以请不要以同样的方式去做,除非你跟踪接下来发生的事情......我的解决方案可能不是很安全所有情况,在我的情况下,这是好的,我认为,但如果有人知道更好,我肯定愿意更多地了解这一点;)
答案 0 :(得分:3)
您可以通过指定
特别告诉TinyMCE不要将您的内容包装到根标签中forced_root_block : false
在您的TinyMCE初始化选项中。
但不建议出于各种原因,请阅读常见问题解答中的此条目: http://tinymce.moxiecode.com/wiki.php/TinyMCE_FAQ#TinyMCE_produce_BR_elements_on_enter.2Freturn_instead_of_P_elements.3F
答案 1 :(得分:2)
非常简单。将此添加到tinymce init选项
force_p_newlines : false
答案 2 :(得分:1)
这是不可能的,因为tinymce(以及我所知道的所有其他rtes)需要将文本包装到像p-tags或div这样的块元素中。这是必要的,以便能够设置该文本的样式(rte的主要功能之一)。 如果你不需要那些简单的表单输入,你可以考虑不使用tinymce编辑器。