Я пытаюсь использовать TinyMCE как часть веб-формы. Интеграция работает нормально, но как только вы отправите форму, данные, конечно, будут проверены.
Если проверка оценивается как ложная, например, какой-то другой ввод не был заполнен, то, конечно, я не хочу, чтобы пользователь повторно вводил все данные. Поэтому я передаю содержимое 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>
Теперь будет отображаться следующим образом в tinymce, если он хранится в $ content:
тест
бла бла бла
И если вы отправите форму, тогда post-data снова будет равна $ content. И именно в этот момент вам следует рассмотреть возможность проверки этих данных на наличие инъекций или атак XSS, поэтому, пожалуйста, не делайте этого одинаково, если только вы не отслеживаете, что происходит дальше ... мое решение, вероятно, не очень безопасно в ВСЕ случаи, в моем случае, это нормально, я предполагаю, но если кто-то знает лучше, я определенно желаю узнать больше об этом;)