【发布时间】:2015-08-31 23:30:31
【问题描述】:
我目前正在使用 Symfony2 和引导模板。我想使用 TinyMCE 的一个极端文本区域作为时事通讯,但在让它工作时遇到了问题。
这里是模板的链接,您可以在其中看到文本区域:http://devoops.me/themes/devoops/#ajax/forms_layouts.html
它带有一个通用的 js 脚本。有一个启动tinymce函数:
function TinyMCEStart(elem, mode) {
var plugins = [];
if (mode == 'extreme') {
plugins = ["advlist anchor autolink autoresize autosave bbcode charmap code contextmenu directionality ",
"emoticons fullpage fullscreen hr image insertdatetime layer legacyoutput",
"link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace",
"tabfocus table template textcolor visualblocks visualchars wordcount"];
}
<!-- ADDED BY ME
tinyMCE.baseURL = 'http://'+location.host+resourcesUrl+"/plugins/tinymce";
tinyMCE.baseURI.setPath(resourcesUrl+"/plugins/tinymce");
tinyMCE.documentBaseURL = 'http://'+location.host+'/ormindo/web/';
-->
tinyMCE.init({selector: elem,
theme: "modern",
plugins: plugins,
//content_css: "css/style.css",
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | print preview media fullpage | forecolor backcolor emoticons",
style_formats: [
{title: 'Header 2', block: 'h2', classes: 'page-header'},
{title: 'Header 3', block: 'h3', classes: 'page-header'},
{title: 'Header 4', block: 'h4', classes: 'page-header'},
{title: 'Header 5', block: 'h5', classes: 'page-header'},
{title: 'Header 6', block: 'h6', classes: 'page-header'},
{title: 'Bold text', inline: 'b'},
{title: 'Red text', inline: 'span', styles: {color: '#ff0000'}},
{title: 'Red header', block: 'h1', styles: {color: '#ff0000'}},
{title: 'Example 1', inline: 'span', classes: 'example1'},
{title: 'Example 2', inline: 'span', classes: 'example2'},
{title: 'Table styles'},
{title: 'Table row 1', selector: 'tr', classes: 'tablerow1'}
]
});
}
在摆弄模板的同时,我得出的结论是这段代码:
<textarea class="form-control" rows="5" id="wysiwig_full"></textarea>
<script type="text/javascript">
$(document).ready(function() {
TinyMCEStart('#wysiwig_full', 'extreme');
});
</script>
足以让 textarea 随时变成 TinyMCE 极致文本编辑器。
问题在于让它与 Symfony 生成的表单一起工作。我尝试了第一种方法,不是最漂亮的,但至少它做了一些事情(脚本添加了 {% javascripts %}):
$(document).ready(function() {
// Create Wysiwig editor for textarea
TinyMCEStart('#ormindo_newsletterbundle_newslettermessage_contents', 'extreme');
});
这确实有效,可惜只有一次。如果我加载另一个 ajax 内容并返回,textarea 将是标准的。这样做时检查页面不会产生任何 javascript 错误。
为了解决问题,我将 Symfony(或者我应该说 Twig)生成的原始 html 复制/粘贴到相关的 twig 文件中。
我现在有一个像这样的树枝文件:
<div class="form-group">
<textarea id="ormindo_newsletterbundle_newslettermessage_contents" name="ormindo_newsletterbundle_newslettermessage[contents]" class="form-control"></textarea>
</div>
<script type="text/javascript">
$(document).ready(function() {
TinyMCEStart('#ormindo_newsletterbundle_newslettermessage_contents', 'extreme');
});
</script>
这仍然不起作用。但是,删除<div class="form-group"></div> 标签使其完美运行。我一直在尝试几件事,尝试不同的 TinyMCE 版本,寻找编码错误,但无济于事。
考虑到自己是网络开发新手,我担心这是我需要外部观点的错误。任何形式的帮助将不胜感激。
【问题讨论】:
-
使用模板版本的 TinyMCE (4.0.16),我有一个不同的错误。 textarea 被简单地隐藏了,我的 Inspect Element 控制台显示“SyntaxError: expected expression, got '
-
好吧,对于 4.0.16,问题似乎是 TinyMCE 中的每个 .js 文件都被缩小了,所以它是 xxx.min.js。然而,TinyMCE 一直在寻找 xxx.js。我目前正在调查。
标签: javascript jquery html symfony tinymce-4