Markdown 是 Laravel 的 CommonMark 包装器

v15.2.0 2024-03-17 23:07 UTC

README

Laravel Markdown 由 Graham Campbell 创建并维护,是 Laravel 的 CommonMark 包装器。它还提供了与 Laravel 视图系统的集成。您可以查看变更日志发布版本安全策略许可证行为准则贡献指南

Banner

Build Status StyleCI Status Software License Packagist Downloads Latest Version

安装

此版本需要 PHP 7.4-8.3,并支持 Laravel 8-11。

要获取最新版本,请使用 Composer 引入项目

$ composer require "graham-campbell/markdown:^15.2"

安装完成后,如果您未使用自动包发现,则需要在您的 config/app.php 中注册 GrahamCampbell\Markdown\MarkdownServiceProvider 服务提供者。

您还可以选择性地为我们的外观设置别名

        'Markdown' => GrahamCampbell\Markdown\Facades\Markdown::class,

配置

Laravel Markdown 支持可选配置。

要开始,您需要发布所有供应商资产

$ php artisan vendor:publish

这将在您的应用中创建一个 config/markdown.php 文件,您可以修改它来设置配置。同时,请确保检查此包中原始配置文件在发布之间的更改。

有几个配置选项

启用视图集成

此选项('views')指定是否启用视图集成,以便您可以使用 markdown 视图并将它们渲染为 HTML。目前支持以下扩展:'.md''.md.php''.md.blade.php'。此外,这将启用 @markdown Blade 指令。如果它与另一个包冲突,您可以禁用此集成。此设置的默认值为 true

CommonMark 扩展

此选项('extensions')指定将自动启用的扩展。在此处简单地提供您的扩展类名称,它们将从服务容器中解析,并注册到 CommonMark。此设置的默认值为 [League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension::class, League\CommonMark\Extension\Table\TableExtension::class]

渲染器配置

此选项('renderer')指定用于渲染 HTML 的选项数组。此设置的默认值为 ['block_separator' => "\n", 'inner_separator' => "\n", 'soft_break' => "\n"]

CommonMark 配置

此选项('commonmark')指定了commonmark的选项数组。此设置的默认值为['enable_em' => true, 'enable_strong' => true, 'use_asterisk' => true, 'use_underscore' => true, 'unordered_list_markers' => ['-', '+', '*']]

HTML 输入

此选项('html_input')指定了如何处理不受信任的HTML输入。此设置的默认值为'strip'

允许不安全链接

此选项('allow_unsafe_links')指定是否允许风险图像URL和链接。此设置的默认值为true

最大嵌套级别

此选项('max_nesting_level')指定允许的最大块嵌套级别。此设置的默认值为PHP_INT_MAX

别名规范化器

此选项('slug_normalizer')指定了别名规范化的选项数组。此设置的默认值为['max_length' => 255, 'unique' => 'document']

用法

Facades\Markdown

此门面将动态地将静态方法调用传递到ioc容器中的'markdown.converter'对象,默认情况下是League\CommonMark\ConverterInterface的一个实例。

MarkdownServiceProvider

此类没有感兴趣的公开方法。应在config/app.php中添加此类到提供者数组。此类将设置ioc绑定。

实际示例

这里可以看到这个包如何简单易用。

use GrahamCampbell\Markdown\Facades\Markdown;

Markdown::convert('foo')->getContent(); // <p>foo</p>

如果你像我一样喜欢使用依赖注入而不是门面,那么你可以轻松地按如下方式注入类

use League\CommonMark\ConverterInterface;

class Foo
{
    private ConverterInterface $converter;

    public function __construct(ConverterInterface $converter)
    {
        $this->converter = $converter;
    }

    public function bar(): string
    {
        return $this->converter->convert('foo')->getContent();
    }
}

app(Foo::class)->bar();

别忘了,这仅仅是基础。我们还支持通过监听容器的解析事件来扩展,我们还提供了与Laravel视图系统的集成。你可以使用@markdown blade指令,也可以使用以下文件扩展名将视图编译为markdown:'.md''.md.php''.md.blade.php'

例如,以下都是渲染markdown的方法

foo.blade.php:

@markdown('# Foo')

bar.blade.php:

@markdown
# Bar
@endmarkdown

baz1.md:

# Baz 1

baz2.md.php:

# Baz 2

baz3.md.blade.php:

# Baz 3
更多信息

在此包中还有一些未在此处文档化的类(例如引擎和编译器类)。这是因为它们不打算公开使用,而是由此包内部使用。

扩展

如配置文档中所述,CommonMark可以通过扩展进行修改。CommonMark文档的定制部分提供了一些很好的示例,说明了如何在定制部分创建自定义解析器和渲染器:https://commonmark.thephpleague.com/

安全性

如果您在此包中发现安全漏洞,请发送电子邮件至[email protected]。所有安全漏洞都将得到及时处理。您可以在此处查看我们的完整安全策略here

许可

Laravel Markdown遵循MIT 许可证 (MIT)

企业版

作为Tidelift订阅的一部分提供

graham-campbell/markdown的维护者以及数千个其他包的维护者正在与Tidelift合作,为您提供的用于构建应用程序的开源依赖项提供商业支持和维护。节省时间,降低风险,提高代码质量,同时支付您确切使用的依赖项的维护者。了解更多信息:Learn more.