tp5使用wangedit4 富文本编辑器

发布时间:2023-09-18作者:小灵龙点击:93

实现的功能如下。



html页面代码:
<script type="text/javascript" src="https://unpkg.com/wangeditor@3.1.1/release/wangEditor.min.js"></script>

<div class="layui-form-item" style="position: relative;z-index: 2;">
             <label class="layui-form-label">内容</label>
             <div class="layui-input-block">
                <div id="div1"></div>
                 <textarea id="editor_content" name="body" style="display:none;"></textarea>
            </div>
   </div>


 <script type="text/javascript">
layui.use('form',function(){
            var form=layui.form;
            //监听提交事件
            form.on('submit(myform)',function(obj){
                fields=JSON.stringify(obj.field);
                $.ajax({
                    url:'__URL__/insert'
                    ,type:'post'
                    ,data:{'val':fields}                 
                    ,success:function(data){  }
                })
                return false;
            })
        })
    var E = window.wangEditor
    var editor = new E('#div1')
    var $text1 = $('#editor_content')
 
    /* 处理上传图片的controller路径 */
    editor.customConfig.uploadImgServer = "{:url('article/insertPic')}"; //上传URL
    editor.customConfig.uploadImgMaxSize = 1 * 1024 * 1024;//图片上传大小设置
    editor.customConfig.uploadImgMaxLength = 100;
    editor.customConfig.uploadFileName = 'file';//服务端接收file的名字
    editor.customConfig.uploadImgHooks = {
        customInsert: function (insertImg, result, editor) {
            // 图片上传并返回结果,自定义插入图片的事件(而不是编辑器自动插入图片!!!)
            // insertImg 是插入图片的函数,editor 是编辑器对象,result 是服务器端返回的结果
            console.log(result);
            // 举例:假如上传图片成功后,服务器端返回的是 {url:'....'} 这种格式,即可这样插入图片:
            var url =result.data;
            insertImg(url);
 
            // result 必须是一个 JSON 格式字符串!!!否则报错
        }
    }
    editor.customConfig.debug = true;
 
    editor.customConfig.onchange = function (html) {
        // 监控输入时的变化,同步更新到 textarea
        $text1.val(html)
    }
    editor.create()
    // 初始化 textarea 的值
    $text1.val(editor.txt.html())
</script>

php后台代码:

//执行添加文章
    public function insert(){
        if(request()->isPost()){

            //获取请求信息写入member表
            $req=htmlspecialchars_decode(input('val'));//实体转为字符
            $data_yp=json_decode($req,true);
            $data_yp['create_time']=time();       
            
            $result=Db::name('articles')->insert($data_yp);
            //判断
            if($result){        
                return json(['code'=>1000,'msg'=>'成功添加文章']);        
            }else {
                return json(['code'=>1001,'msg'=>'添加文章失败']);                
            }
        }

    }
//编辑器上传图片
public function insertPic(){
        $file = request()->file('file');
        //上传回调error为0
        if(empty($file)){
            $result["error"] = "1";
            $result['data'] = '';
        }else{
            // 移动到框架应用根目录/public/uploads/ 目录下
            $info = $file->move(ROOT_PATH . 'public' . DS . 'static/admin/image/editor' );
            if($info){
                $name_path =$info->getSaveName();
                //成功上传后 获取上传信息
                $name_path =str_replace('\\',"/",$info->getSaveName());
                $result["error"] = '0';
                $result['data'] = "/image/editor/".$name_path;
            }else{
                // 上传失败获取错误信息
                $result["code"] = "2";
                $result['data'] ='';
            }
        }

        return json_encode($result);

    }
标签: