Thinkphp5框架中引入Markdown编辑器操作示例


Posted in PHP onJune 03, 2020

本文实例讲述了Thinkphp5框架中引入Markdown编辑器操作。分享给大家供大家参考,具体如下:

编辑器下载地址以及演示:https://pandao.github.io/editor.md/

1.把下载的项目放在public目录下

2.页面中引入jquery.js,editormd.js,editormd.css

demo

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>markdown测试</title>
  <link rel="stylesheet" href="/public/markdown/css/editormd.css" rel="external nofollow" />
  <script src="__JS__/jquery.min.js"></script>
  <script src="/public/markdown/editormd.js"></script>
</head>
<body>
  <form action="{:url('test')}" enctype="multipart/form-data" method='post'>
    <div id="content-editormd" class="form-group">
      <textarea style="display:none;" class="form-control" id="content-editormd-markdown-doc" name="content-editormd-markdown-doc"></textarea>
    </div>
    <button>提交</button>
  </form>
<script type="text/javascript">
  $(function() {
    editormd("content-editormd", {
      placeholder : '编辑你的内容...',
      width  : "100%",
      height : 1000,
      syncScrolling : "single",
      path  : "/public/markdown/lib/",
      watch  : true,
      previewTheme : "white",//预览
      theme : 'white',//工具栏
      saveHTMLToTextarea : true, // 保存HTML到Textarea
      // 图片上传
      imageUpload : true,
      imageFormats: ["jpg","jpeg","gif","png","bmp","webp"],
      imageUploadURL: "/api/Upload/markdownUpload",
        toolbarIcons : function() { //自定义工具栏,后面有详细介绍
     return editormd.toolbarModes['full']; // full, simple, mini
   },
    });
  });
//上传
/*
{
  success : 0 | 1,      // 0 表示上传失败,1 表示上传成功
  message : "提示的信息,上传成功或上传失败及错误信息等。",
  url   : "图片地址"    // 上传成功时才返回
}
*/
</script>
</body>
</html>

上传图片

public function markdownUpload(){
    $config = [
      'size' => 2097152,
      'ext' => 'jpg,gif,png,bmp'
    ];
 
    $file = $this->request->file('editormd-image-file');
    $upload_path = str_replace('\\', '/', ROOT_PATH . 'public/uploads');
    $save_path  = '/uploads/';
    $info    = $file->validate($config)->move($upload_path);
    if ($info) {
      $result = [
        'success' => 1,
        'message' => '上传成功',
        'url'  => str_replace('\\', '/', '/public/'.$save_path . $info->getSaveName())
      ];
    } else {
      $result = [
        'success'  => 0,
        'message' => $file->getError(),
        'url'  => str_replace('\\', '/', '/public/'.$save_path . $info->getSaveName())
      ];
    }
    return json($result);
  }

3.页面加载markdown格式内容

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>页面加载markdown格式内容</title>
 <link href="/public/markdown/css/editormd.min.css" rel="external nofollow" rel="external nofollow" rel="stylesheet" />
 <script src="__JS__/jquery.min.js"></script>
 <script src="/public/markdown/lib/marked.min.js"></script>
 <script src="/public/markdown/lib/prettify.min.js"></script>
 <script src="/public/markdown/lib/raphael.min.js"></script>
 <script src="/public/markdown/lib/underscore.min.js"></script>
 <script src="/public/markdown/lib/sequence-diagram.min.js"></script>
 <script src="/public/markdown/lib/flowchart.min.js"></script>
 <script src="/public/markdown/lib/jquery.flowchart.min.js"></script>
 <script src="/public/markdown/editormd.js"></script>
</head>
<body>
 <div id="doc-content">
 <textarea style="display:none;">
```php
 <?php
 
 echo 1;
 ?>
```
</textarea>
</div>
 
<script type="text/javascript">
  var testEditor;
  $(function () {
    testEditor = editormd.markdownToHTML("doc-content", {//注意:这里是上面div的id
      htmlDecode: "style,script,iframe",
      emoji: true,
      taskList: true,
      tocm: true,
      tex: true, // 默认不解析
      flowChart: true, // 默认不解析
      sequenceDiagram: true, // 默认不解析
      codeFold: true
    });});
 
</script>
</body>
</html>

4.直接展示html格式的内容

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>前端显示</title>
 <link href="/public/markdown/css/editormd.min.css" rel="external nofollow" rel="external nofollow" rel="stylesheet" />
 <script src="__JS__/jquery.min.js"></script>
 <script src="/public/markdown/lib/marked.min.js"></script>
 <script src="/public/markdown/lib/prettify.min.js"></script>
 <script src="/public/markdown/editormd.min.js"></script>
 
</head>
<body>
 <div id="doc-content">
 {:htmlspecialchars_decode($data)}
 </div>
<script type="text/javascript">
  $(function () {
    editormd.markdownToHTML("doc-content");
  })
</script>
</body>
</html>

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php正则校验用户名介绍
Jul 19 PHP
php getsiteurl()函数
Sep 05 PHP
PHP反转字符串函数strrev()函数的用法
Feb 04 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
May 23 PHP
ThinkPHP模板引擎之导入资源文件方法详解
Jun 18 PHP
php获取百度收录、百度热词及百度快照的方法
Apr 02 PHP
php获得网站访问统计信息类Compete API用法实例
Apr 02 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
Jul 06 PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
Feb 05 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 23 PHP
详解PHP Swoole与TCP三次握手
May 27 PHP
PHP数组基本用法与知识点总结
Jun 02 #PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 02 #PHP
PHP与Web页面交互操作实例分析
Jun 02 #PHP
PHP Web表单生成器案例分析
Jun 02 #PHP
一文看懂PHP进程管理器php-fpm
Jun 01 #PHP
PHP论坛实现积分系统的思路代码详解
Jun 01 #PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
May 29 #PHP
You might like
PHP Token(令牌)设计
2008/03/15 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
在PHP中输出JS语句以及乱码问题的解决方案
2019/02/13 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
javascript prototype 原型链
2009/03/12 Javascript
替代window.event.srcElement效果的可兼容性的函数
2009/12/18 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
理解JavaScript表单的基础知识
2016/01/25 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
Webpack中雪碧图插件使用详解
2018/05/25 Javascript
微信小程序修改checkbox的样式代码实例
2020/01/21 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
Python3实现生成随机密码的方法
2014/08/23 Python
基于Python的接口测试框架实例
2016/11/04 Python
Python 绘图和可视化详细介绍
2017/02/11 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
python实现的Iou与Giou代码
2020/01/18 Python
Python如何读取、写入CSV数据
2020/07/28 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
python爬虫scrapy框架之增量式爬虫的示例代码
2021/02/26 Python
全球知名的婚恋交友网站:Match.com
2017/01/05 全球购物
瑞典领先的汽车零部件网上零售商:bildelaronline24.se
2017/01/12 全球购物
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
继承公证书
2014/04/09 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
python神经网络ResNet50模型
2022/05/06 Python
python实现学生信息管理系统(面向对象)
2022/06/05 Python