”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 在 Laravel 11 中使用辅助函数将 Markdown 转换为 HTML

在 Laravel 11 中使用辅助函数将 Markdown 转换为 HTML

发布于2024-08-01
浏览:143

Using Helper Functions to Convert Markdown to HTML in Laravel 11

在本教程中,我们将在 Laravel 应用程序中创建一个辅助函数,以使用 league/commonmark 库将 Markdown 内容转换为 HTML。我们将介绍创建帮助程序文件、将其包含在 Laravel 项目中以及在 Blade 模板中使用它的步骤。 Laravel 11 中使用此机制来使函数全局可用。

可选:在控制器中处理 Markdown 转换

另一种方法是在将数据传递到视图之前在控制器中处理 Markdown 转换,因此我们不再需要创建帮助程序文件:

use League\CommonMark\CommonMarkConverter;

public function show($id)
{
    $course = Course::find($id);
    $converter = new CommonMarkConverter();

    $post->description = $converter->convertToHtml($post->description);

    return view('post.show', compact('post'));
}

创建帮助文件以使转换功能在刀片模板中可用

第 1 步:安装 league/commonmark

首先,我们通过 Composer 安装 league/commonmark 库:

composer require league/commonmark

第 2 步:创建 helpers.php 文件

接下来,我们将创建一个 helpers.php 文件来定义我们的帮助函数。该文件可以放置在应用程序目录或任何其他首选位置。

touch app/helpers.php

打开app/helpers.php并添加以下内容:

convertToHtml($markdown);
    }
}

第 3 步:将辅助文件包含在 Composer 中

为了确保Laravel自动加载helpers.php文件,我们需要修改composer.json文件,在autoload部分添加helpers.php的路径:

"autoload": {
    "files": [
        "app/helpers.php"
    ]
}

第 4 步:重新生成 Composer 自动加载文件

修改composer.json后,通过运行重新生成Composer自动加载文件:

composer dump-autoload

第5步:使用刀片模板中的辅助函数

定义并加载辅助函数后,我们现在可以在 Blade 模板中使用它来将 Markdown 转换为 HTML:

{!! markdownToHtml($post->description) !!}

本教程旨在展示如何在刀片模板中提供自定义功能。

版本声明 本文转载于:https://dev.to/websilvercraft/using-helper-functions-to-convert-markdown-to-html-in-laravel-11-30a?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 了解 PHPUnit 测试中的模拟对象
    了解 PHPUnit 测试中的模拟对象
    编写单元测试时,一个关键的挑战是确保您的测试专注于被测代码,而不受外部系统或依赖项的干扰。这就是 mock 对象 在 PHPUnit 中发挥作用的地方。它们允许您以受控方式模拟真实对象的行为,使您的测试更可靠且更易于维护。在本文中,我们将探讨什么是模拟对象、它们为何有用以及如何在 PHPUnit 中...
    编程 发布于2024-11-03
  • 如何使用 whereBetween() 和 Carbon 检索 Laravel 中的重复项目?
    如何使用 whereBetween() 和 Carbon 检索 Laravel 中的重复项目?
    Laravel $q->where() Between Dates: An Optimized Approach for Recurring Projects检索设置为续订或重复的项目特定时间段,您可以将 $q->where() 方法与自定义函数一起使用。然而,在 Laravel 中有更有效的方法来...
    编程 发布于2024-11-03
  • 模拟 Python 类
    模拟 Python 类
    最近,我不得不使用 Pytest 为 Python 模块编写单元测试。该模块包含一个类,其他类在其构造函数中初始化。 像往常一样,我为此类创建了一个固定装置,以便轻松为每个类方法编写测试。此时,当我尝试模拟构造函数中启动的不同类时,我遇到了一些问题。模拟不起作用,这些类的实例仍在创建中。 经过一些研...
    编程 发布于2024-11-03
  • 如何在单个 MySQL 查询中获取多条记录及其相关数据?
    如何在单个 MySQL 查询中获取多条记录及其相关数据?
    在一个响应中返回多个响应数据在您的 PHP 代码中,您有一个从数据库表中获取多行数据的查询。但是,您收到多个响应,并且希望将它们合并为具有多个记录的单个响应。要实现此目的,您需要修改查询以对必要的表执行左联接。您将获取主题数据并使用左连接包含相关学生信息,而不是获取学生数据。这将允许您在单个响应中包...
    编程 发布于2024-11-03
  • D - 依赖倒置原理(DIP)
    D - 依赖倒置原理(DIP)
    Before understanding DIP (Dependency Inversion Principle), it's important to know what High-Level and Low-Level modules and abstractions are. ...
    编程 发布于2024-11-03
  • 为什么 JavaScript RegEx 无法验证输入?
    为什么 JavaScript RegEx 无法验证输入?
    Javascript 中的 RegEx 功能的斗争:“Regex 不工作”的案例研究在标题中引用的查询的上下文中,“Javascript RegEx 不工作” ,”用户遇到了一个问题,即无论输入值如何,正则表达式 (regEx) 始终返回 false。查询中提供的代码片段如下:function ch...
    编程 发布于2024-11-03
  • 如何对 Ajax 请求进行排序以实现最佳控制?
    如何对 Ajax 请求进行排序以实现最佳控制?
    对 Ajax 请求进行排序迭代集合并对每个元素进行单独的 Ajax 调用时,必须控制顺序以防止服务器过载和浏览器冻结。虽然可以使用自定义迭代器,但还有更优雅的解决方案可用。jQuery 1.5 在 jQuery 1.5 及更高版本中,$.ajaxQueue() 插件利用 $ .Deferred、$....
    编程 发布于2024-11-03
  • 如何为 DOM 元素生成精确的 CSS 路径?
    如何为 DOM 元素生成精确的 CSS 路径?
    以增强的精度从 DOM 元素检索 CSS 路径提供的函数尝试为给定 DOM 元素生成 CSS 路径。然而,它的输出缺乏特异性,无法捕获元素在其兄弟元素中的位置。为了解决这个问题,我们需要一种更复杂的方法。改进的 CSS 路径函数下面介绍的增强函数解决了原来的限制:var cssPath = func...
    编程 发布于2024-11-03
  • 如何将单个 Python 字典写入具有精确标题和值行的 CSV 文件?
    如何将单个 Python 字典写入具有精确标题和值行的 CSV 文件?
    探索将 Python 字典写入 CSV 文件的细微差别您对将 Python 字典无缝写入 CSV 文件的追求给您带来了意想不到的挑战。虽然您设想在作为标题的字典键和作为第二行的值之间进行清晰的划分,但您当前的方法似乎还不够。让我们深入细节,解锁解决方案。问题在于方法的选择。 DictWriter.w...
    编程 发布于2024-11-03
  • 如何处理 Go 中延迟函数的错误返回值?
    如何处理 Go 中延迟函数的错误返回值?
    处理 Go 中返回值错误的延迟函数当返回变量的函数在没有延迟的情况下被延迟时,gometalinter 和 errcheck 正确地发出警告检查其返回的错误。这可能会导致未处理的错误和潜在的运行时问题。处理这种情况的习惯用法不是推迟函数本身,而是将其包装在另一个检查返回值的函数中。这是一个例子:de...
    编程 发布于2024-11-03
  • 为什么程序员不能总是记住代码:背后的科学
    为什么程序员不能总是记住代码:背后的科学
    如果您曾经想知道为什么程序员很难回忆起他们编写的确切代码,那么您并不孤单。尽管花费了数小时编码,许多开发人员经常忘记细节。这并不是因为缺乏知识或经验,而是因为工作本身的性质。我们来探究一下这种现象背后的原因。 编程的本质 通过记忆解决问题 这比仅仅记忆语法更能解决问题...
    编程 发布于2024-11-03
  • 你并不孤单:在社区的支持下掌握 Python
    你并不孤单:在社区的支持下掌握 Python
    加入 Python 社区可获得:社区论坛:向经验丰富的开发者获取支持和建议(如 Stack Overflow)。Discord 服务器:实时聊天室,提供即时支持和指导(如 Python Discord)。在线课程和研讨会:来自专家的指导,涵盖各种主题(如 Udemy 上的 Python NumPy ...
    编程 发布于2024-11-03
  • 学习伙伴
    学习伙伴
    聊天机器人界面,允许用户输入消息并接收来自 GPT-3.5 语言模型的对话响应。 特征 用于处理 HTTP 请求的基于 Flask 的 Web 服务器。 呈现用作用户界面的基本 HTML 模板 (chat.html)。 通过 POST 请求接受用户输入并将其发送到 OpenAI 的 GPT-3.5 ...
    编程 发布于2024-11-03
  • 前端开发 + 数据结构和算法:DSA 如何为您的 React 应用程序提供动力 ⚡
    前端开发 + 数据结构和算法:DSA 如何为您的 React 应用程序提供动力 ⚡
    专注于前端的面试通常根本不关心 DSA。 对于我们这些记得在学校/大学学习过 DSA 的人来说,所有的例子都感觉纯粹是算法(有充分的理由),但几乎没有任何例子或指导来说明我们每天使用的产品如何利用这个概念。 “我需要这个吗?” 你已经问过很多次这个问题了,不是吗? ? 以下是您今天可以在 React...
    编程 发布于2024-11-03
  • 为什么表行上的框阴影在不同浏览器中表现不同?
    为什么表行上的框阴影在不同浏览器中表现不同?
    跨浏览器表行上的框阴影外观不一致应用于表行 () 的 CSS 框阴影可能表现出不一致的行为跨各种浏览器。尽管 CSS 相同,但某些浏览器可能会按预期显示阴影,而其他浏览器则可能不会。要解决此问题,建议将 Transform 属性与 box-shadow 属性结合使用。将scale(1,1)添加到tr...
    编程 发布于2024-11-03

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3