JS TinyMCE 正在保存整页
JS TinyMCE is saving full page
我在使用 TinyMCE 时遇到了这个问题,当我将内容提交到数据库时,它是用 <!doctype...<html>.....<body>
保存的。我看到了一些关于删除整页插件的帖子,但就我而言,我没有。所以我试着删除它以确定,并刷新我的浏览器缓存,我仍然遇到同样的问题。我只想保存正文标签之间的 HTML。
我像普通表单一样提交 tinyMCE,文本区域具有 POST 名称和提交按钮。
<form method="post" action="/profile/edit/profile/text">
{{ csrf_field() }}
<input type="hidden" name="text2" value="1">
<textarea id="tinymce-editor" name="text">{!! $profile -> text !!}</textarea>
<button class="btn btn-success" type="submit"><i class="fa fa-fw fa-check"></i>Lagre</button>
</form>
.
/**
* @return mixed
*
* Process profile text
*/
public function postEditText() {
// Sanitize HTML
$html = $this -> sanitizeHTML(Input::get('text'));
// Validate
$val = Validator::make([
'text' => $html
], [
'text' => 'sometimes|max:50000'
]);
if ($val -> fails()) {
return $this -> backWithErrors($val);
}
// Update
Auth::user() -> profile() -> update([
'text' => $html
]);
return $this -> backWithSuccess('Profilteksten ble lagret!');
}
.
/**
* @param $html
* @return string
*
* HTML sanitizer
*/
private function sanitizeHTML($html) {
// Disable entity loader
libxml_disable_entity_loader(false);
// New DOM doc
$d = new \DOMDocument();
$d -> loadHTML($html);
// Script tags
$st = $d -> getElementsByTagName('script');
$l = $st -> length;
// Remove
for ($i = 0; $i < $l; $i++) {
$st -> item($i) -> parentNode -> removeChild($st -> item($i));
}
return $d -> saveHTML();
}
提前致谢。
您似乎拥有创建新 DOMDocument
然后将 HTML 加载到其中的代码。
如果您记录 Input::get('text')
的结果,您会得到什么?
也许您在 sanitizeHTML()
中的代码正在创建完整的 HTML 文档?
根据 DOMDocument
的手册,它 "Represents an entire HTML or XML document; serves as the root of the document tree." 如果是这种情况,我怀疑这就是创建整个文档的原因 - 而不是 TinyMCE。
我在使用 TinyMCE 时遇到了这个问题,当我将内容提交到数据库时,它是用 <!doctype...<html>.....<body>
保存的。我看到了一些关于删除整页插件的帖子,但就我而言,我没有。所以我试着删除它以确定,并刷新我的浏览器缓存,我仍然遇到同样的问题。我只想保存正文标签之间的 HTML。
我像普通表单一样提交 tinyMCE,文本区域具有 POST 名称和提交按钮。
<form method="post" action="/profile/edit/profile/text">
{{ csrf_field() }}
<input type="hidden" name="text2" value="1">
<textarea id="tinymce-editor" name="text">{!! $profile -> text !!}</textarea>
<button class="btn btn-success" type="submit"><i class="fa fa-fw fa-check"></i>Lagre</button>
</form>
.
/**
* @return mixed
*
* Process profile text
*/
public function postEditText() {
// Sanitize HTML
$html = $this -> sanitizeHTML(Input::get('text'));
// Validate
$val = Validator::make([
'text' => $html
], [
'text' => 'sometimes|max:50000'
]);
if ($val -> fails()) {
return $this -> backWithErrors($val);
}
// Update
Auth::user() -> profile() -> update([
'text' => $html
]);
return $this -> backWithSuccess('Profilteksten ble lagret!');
}
.
/**
* @param $html
* @return string
*
* HTML sanitizer
*/
private function sanitizeHTML($html) {
// Disable entity loader
libxml_disable_entity_loader(false);
// New DOM doc
$d = new \DOMDocument();
$d -> loadHTML($html);
// Script tags
$st = $d -> getElementsByTagName('script');
$l = $st -> length;
// Remove
for ($i = 0; $i < $l; $i++) {
$st -> item($i) -> parentNode -> removeChild($st -> item($i));
}
return $d -> saveHTML();
}
提前致谢。
您似乎拥有创建新 DOMDocument
然后将 HTML 加载到其中的代码。
如果您记录 Input::get('text')
的结果,您会得到什么?
也许您在 sanitizeHTML()
中的代码正在创建完整的 HTML 文档?
根据 DOMDocument
的手册,它 "Represents an entire HTML or XML document; serves as the root of the document tree." 如果是这种情况,我怀疑这就是创建整个文档的原因 - 而不是 TinyMCE。