在使用CKEditor的Laravel编辑表单中如何正确渲染已存储的文本内容
问题核心原因
<textarea> 是双闭合标签,默认内容不支持通过value属性赋值,必须写在<textarea>和</textarea>的中间部分,你之前的三种写法都把内容放在了value和placeholder属性里,所以CKEditor读取不到对应内容。
另外你第三种写法存在语法错误,{!!html_entity_decode($basics!!} 缺少右括号,会触发Blade解析报错;同时placeholder属性仅用于无内容时的输入提示,不能作为默认值使用。
正确解决方案
把原有内容放在textarea标签中间,用Blade默认的双大括号输出即可,双大括号会自动做HTML实体转义,避免内容中的特殊标签(比如</textarea>)打断页面结构,CKEditor会自动将转义后的内容还原为富文本展示:
<textarea class="ckeditor form-control" name="basics" id="basics" cols="30" rows="10"> {{ old('basics', $basics) }} </textarea>
如果修改后还是不显示,可以在CKEditor初始化逻辑中手动注入内容:
CKEditor 4 示例
CKEDITOR.replace('basics'); CKEDITOR.instances.basics.setData(`{{ old('basics', $basics) }}`);
CKEditor 5 示例
ClassicEditor.create(document.querySelector('#basics')) .then(editor => { editor.setData(`{{ old('basics', $basics) }}`); });
内容的提问来源于stack exchange,提问作者techwestcoastsfosea
相关产品推荐
相关产品推荐

