我正在尝试将ckeditor与cakephp一起使用,并且我编写了一个助手。问题是当我使用 CKeditor 输入一些换行符或添加复选框(或其他 html 元素)时,编辑器会在下次编辑内容时崩溃。Firefox 返回以下错误:
语法错误:未终止的字符串文本
并重点介绍以下部分中}).setData("<p>test</p>
:
<script type="text/javascript">CKEDITOR.replace('data[Template][body]',{
toolbar: '',
toolbarGroups: '',
width: 950,
height: 500
}).setData("<p>test</p>
<p> </p>
<p>test</p>");</script>
这是蛋糕助手中的代码:
$code = "CKEDITOR.replace('{$id}',{
{$options['toolbar']},
{$options['toolbarGroups']},
width: {$options['width']},
height: {$options['height']}
}).setData('" . trim($value). "');";
return $this->Javascript->codeBlock($code);
任何帮助将不胜感激。
这是因为 JavaScript 字符串中有换行符。您应该将换行符输出为 HTML 作为"'",以便您的 HTML 输出如下所示:
<script type="text/javascript">CKEDITOR.replace('data[Template][body]',{
toolbar: '',
toolbarGroups: '',
width: 950,
height: 500
}).setData("<p>test</p>'n<p> </p>'n<p>test</p>");</script>
所以在你的助手里面:
$out .= "}).setData('" . str_replace("'n", ''n', $value). "');";
我使用了单引号,所以它会打印出'而不是换行符;
或者您可以使用:str_replace("'n", "''n", $value)