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 相关文章推荐
discuz7 phpMysql操作类
Jun 21 PHP
THINKPHP+JS实现缩放图片式截图的实现
Mar 07 PHP
PHP下对字符串的递增运算代码
Aug 21 PHP
PHP、Python和Javascript的装饰器模式对比
Feb 03 PHP
完美利用Yii2微信后台开发的系列总结
Jul 18 PHP
PHP将字符串首字母大小写转换的实例
Jan 21 PHP
PHP处理Ajax请求与Ajax跨域问题
Feb 13 PHP
PHP上传文件及图片到七牛的方法
Jul 25 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
Feb 28 PHP
PHP切割汉字的常用方法实例总结
Apr 27 PHP
Thinkphp5框架使用validate实现验证功能的方法
Aug 27 PHP
PHP 构造函数和析构函数原理与用法分析
Apr 21 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之变量、常量学习笔记
2008/03/27 PHP
php中实现简单的ACL 完结篇
2011/09/07 PHP
关于svn冲突的解决方法
2013/06/21 PHP
zend optimizer在wamp的基础上安装图文教程
2013/10/26 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
PHP类的自动加载机制实现方法分析
2019/01/10 PHP
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
JS验证身份证有效性示例
2013/10/11 Javascript
bootstrap vue.js实现tab效果
2017/02/07 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
微信小程序获取公众号文章列表及显示文章的示例代码
2020/03/10 Javascript
JavaScript创建表格的方法
2020/04/13 Javascript
python使用marshal模块序列化实例
2014/09/25 Python
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
解决python文件双击运行秒退的问题
2019/06/24 Python
详解python itertools功能
2020/02/07 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
美国时尚在线:Showpo
2017/09/08 全球购物
StringBuilder和String的区别
2015/05/18 面试题
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
教育合作协议范本
2014/10/17 职场文书
安全先进个人材料
2014/12/29 职场文书
贪污检举信范文
2015/03/02 职场文书
求职自我推荐信
2015/03/24 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书
MySQL kill不掉线程的原因
2021/05/07 MySQL
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android
Mysql事务索引知识汇总
2022/03/17 MySQL
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS