• Laravel文档阅读笔记-Adding a Markdown editor to Laravel


    注意

    此博文对应的Laravel版本为8,5版本是不能用的,很多函数都没有。

    开始

    使用Laravel创建好基本的blog,css美化用Tailwind CSS,创建Post界面是这样的。

    这里内容使用的是html中的textarea关键字,这样写文章内容非常痛苦,所以将这个textarea升级,换成MarkDown。

    安装和配置

    MarkDown的编辑器使用Toast UI Editor,使用如下命令进行安装:

    npm install --save @toast-ui/editor

    使用div代替上textarea区域,设置好id,后面用JS中配置MarkDown编辑器:

    1. <!-- resources/views/posts/create.blade.php -->
    2. <div class="flex flex-col space-y-2">
    3. <label for="editor" class="text-gray-600 font-semibold">Content</label>
    4. <div id="editor" class="mt-1 block w-full rounded-md border-gray-300 shadow-sm"><div>
    5. </div>

    下面在JS中,将MarkDown编辑器实例化出来。

    1. // resources/js/app.js
    2. import Editor from '@toast-ui/editor'
    3. import 'codemirror/lib/codemirror.css';
    4. import '@toast-ui/editor/dist/toastui-editor.css';
    5. const editor = new Editor({
    6. el: document.querySelector('#editor'),
    7. height: '400px'
    8. initialEditType: 'markdown',
    9. placeholder: 'Write something cool!',
    10. })

    编译一下:

    npm run dev # or 'npm run watch' to listen for file changes and compile automatically

     这样MarkDown的编辑器就出来了:

    如果上面的功能不太行,可以查文档进行编辑器配置。

    设置MarkDown内容的编辑

    编辑器被渲染到div中,是没有inpute框的,也没有name这个属性,这样,不能发送到服务端进行存储。

    所以要使用JS获取MarkDown编辑器中的内容,并且增加隐藏的表单,把MarkDown的内容设置到表达Input中。

    对应的html代码如下:

    1. <!-- resources/views/posts/create.blade.php -->
    2. <input type="hidden" name="content" id="content">

     对应的JS代码如下:

    1. // resources/js/app.js
    2. document.querySelector('#createPostForm').addEventListener('submit', e => {
    3. e.preventDefault();
    4. document.querySelector('#content').value = editor.getMarkdown();
    5. e.target.submit();
    6. });

    然后编译下前端代码:

    npm run dev

    这样后端接收到后,就能进行存储了。

    MarkDown转成HTML

    文章以MarkDown的格式存储后,需要再前端进行展示,如下:

    2021年1月,Laravel就集成了MarkDown转HTML的功能,用法简单:

    1. // resources/views/posts/show.blade.php
    2. {!! \Illuminate\Support\Str::markdown($post->content) !!}

     这样显示就正常了:

     

    源码下载地址:

    https://github.com/stevie-c91/laravel-markdown-editor

     

  • 相关阅读:
    leetcode解题思路分析(一百二十四)1025 - 1031 题
    Java设计模式七大原则-迪米特法则
    大数据-ClickHouse技术二(数据库引擎)
    基于C++和遗传算法的旅行商问题解决方案(免费提供源码)
    docker真实IP解决
    Python 潮流周刊第 39 期(摘要)
    2023CRM排行:深度对比16款CRM
    Emgu CV4图像处理之膨胀和腐蚀、梯度计算、开闭运算14(C#)
    MySQL数据库的数据类型和基于MySQL数据类型的综合实例项目
    汉字乱码汇总
  • 原文地址:https://blog.csdn.net/qq78442761/article/details/125495440