You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TinyMCE编辑器无法显示数据库文本的问题求助

解决TinyMCE编辑器在编辑页面无法显示数据库文本的问题

问题根源分析

  1. 变量名不匹配:你使用setContent时报错$articleText未定义,是因为$articleText仅存在于发布文章的模型方法中,编辑视图里控制器传递的是$singlePost数组(包含titre、message等字段),二者变量名不一致。
  2. HTML转义未处理:发布文章时用htmlspecialchars($data['Subject'], ENT_QUOTES)对内容进行了转义,数据库中存储的是转义后的字符(比如<变成&lt;),直接赋值给TinyMCE会显示原始转义代码而非正常内容。
  3. TinyMCE初始化逻辑错误:未正确将数据库查询到的内容传递给编辑器。

具体解决方案

方案一:直接在textarea标签中输出内容(最简单)

在edit_post.php视图里,将textarea替换为以下代码:

<textarea id="post-content" name="Subject">
    <?php 
    // 解码转义的HTML字符,确保内容正常显示
    echo htmlspecialchars_decode($singlePost['message']); 
    ?>
</textarea>

<script>
tinymce.init({
    selector: '#post-content',
    // 其他TinyMCE配置项...
});
</script>

TinyMCE会自动读取textarea中的初始内容,无需额外调用setContent。

方案二:使用setContent方法初始化内容

如果需要通过JS动态设置内容,确保在编辑器初始化完成后调用setContent,同时处理字符转义避免JS语法错误:

<textarea id="post-content" name="Subject"></textarea>

<script>
tinymce.init({
    selector: '#post-content',
    setup: function(editor) {
        editor.on('init', function() {
            // 用addslashes处理引号,避免JS字符串解析错误,同时解码HTML转义
            this.setContent("<?php echo addslashes(htmlspecialchars_decode($singlePost['message'])); ?>");
        });
    },
    // 其他TinyMCE配置项...
});
</script>

额外检查项

  1. 确认视图中能正常获取$singlePost数据:在视图开头添加var_dump($singlePost);,检查是否包含message字段及对应内容。
  2. 确保TinyMCE的初始化脚本在textarea标签之后加载,或者包裹在DOMContentLoaded事件中:
document.addEventListener('DOMContentLoaded', function() {
    tinymce.init({
        // 配置项...
    });
});

内容的提问来源于stack exchange,提问作者Alexis P.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 03:20:18