【发布时间】:2019-01-02 15:14:41
【问题描述】:
我正在使用 tinymce 使用“laravel-tinymce-simple-imageupload”包上传图片。所以我有一个页面,用户可以在其中选择注册类型并在 tinymce 文本区域中输入一些内容,以将该内容与所选注册类型相关联。
但是有一个问题。例如,用户可以选择一种注册类型,然后在文本区域中写入例如“证书 1”并单击表单中的“存储”按钮。在数据库中,tinymce 中引入的内容存储如下:
<p>certificate 1</p>
所以这是正确的。
但问题是,例如,如果用户在文本区域中而不是只写“证书 1”,而是写了“证书 1”,然后输入,在下一行也写例如“测试”并单击表单“存储”按钮页面刷新,tinymce 按钮从 textarea 中消失,textarea 中引入的内容插入到 db 中,如:
<p>certificate 1</p>
<p>test</p>
并且在控制台上出现错误:“Uncaught SyntaxError: Invalid or unexpected token” in:
var certificate = {};
certificate[1] =
'<p>cert1<img src="../../../img/image_1532441196_7.jpeg"
alt="" width="1200" height="900" /></p>';
certificate[2] = '<p>cert2</p>
<p> </p>
<p>cert 2</p>
<p> </p>
<p>aee</p>';
但如果我在数据库中更改为“<p>certificate 1</p><p>test</p>”,即内容在同一行,刷新页面时会再次出现 tinymce 按钮。
你知道可能是什么问题吗?
certificateController 中将证书内容(tinymce textarea 中引入的内容)插入数据库的代码:
public function update(Request $request){
$registrationType = RegistrationType::where('id', $request->registrationType)->first();
$certificate = $registrationType->certificate;
// if no certificate exists for this type, create it
if(!$certificate ) {
$certificate = new Certificate();
}
// the certificate_content is the textarea with the tinymce plugin
$certificate->content = $request->certificate_content;
$certificate->save();
$registrationType->certificate_id = $certificate->id;
$registrationType->save();
$certificateContent = RegistrationType::with('certificate')->where('id', $request->registrationType)->first();
Session::flash('success','Certificate configured with success for the selected registration type.');
return redirect()->back();
}
jQuery:
<script type="text/javascript">
var certificate = {};
@foreach($conference->registrationTypes as $registrationType)
@if(!$registrationType->certificate)
certificate[{{ $registrationType->id }}] = '';
@else
certificate[{{ $registrationType->id }}] = '{!! $registrationType->certificate->content !!}';
@endif
@endforeach
$(function () {
$('.radio').change(function () {
var registrationTypeId = $('input[name=registrationType]:checked').val();
$(tinymce.get('certificate_content').getBody()).html(certificate[registrationTypeId]);
});
tinymce.init({
selector: 'textarea',
plugins: 'image code link lists textcolor wordcount ' +
' hr pagebreak colorpicker textpattern anchor table media',
relative_urls: true,
file_browser_callback: function (field_name, url, type, win) {
// trigger file upload form
if (type == 'image') $('#formUpload input').click();
}
});
});
</script>
【问题讨论】:
标签: php jquery laravel tinymce