bee-b/markdown

Markdown 是 Laravel 的 CommonMark 包装器

v13.1.2 2021-09-10 10:59 UTC

README

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

Banner

Promo Banner

Build Status StyleCI Status Software License Packagist Downloads Latest Version

安装

Laravel Markdown 需要 PHP 7.2-8.0。这个版本支持 Laravel 6-8。

要获取最新版本,只需使用Composer引用项目。

$ composer require graham-campbell/markdown:^13.1

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

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

        '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 注册。此设置的默认值为[]

渲染器配置

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

启用 Em 标签解析

此选项('enable_em')指定是否启用<em>解析。此设置的默认值为true

启用 Strong 标签解析

此选项('enable_strong')指定是否启用<strong>解析。此设置的默认值为true

启用星号解析

此选项('use_asterisk')指定是否解析*以进行强调。此设置的默认值是true

启用下划线解析

此选项('use_underscore')指定是否解析_以进行强调。此设置的默认值是true

HTML 输入

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

允许不安全链接

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

最大嵌套级别

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

用法

Facades\Markdown

此外观会将静态方法调用动态传递到 ioc 容器中的 'markdown' 对象,默认情况下是 League\CommonMark\MarkdownConverterInterface 的一个实例。

MarkdownServiceProvider

此类不包含任何感兴趣的公共方法。应在 config/app.php 中的 providers 数组中添加此类。此类将设置 ioc 绑定。

真实示例

在这里,您可以看到使用此包是多么简单。

use GrahamCampbell\Markdown\Facades\Markdown;

Markdown::convertToHtml('foo'); // <p>foo</p>

如果您像我一样更喜欢使用依赖注入而不是外观,则可以轻松地将类注入如下

use Illuminate\Support\Facades\App;
use League\CommonMark\MarkdownConverterInterface;

class Foo
{
    protected $converter;

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

    public function bar()
    {
        return $this->converter->convertToHtml('foo');
    }
}

App::make('Foo')->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 文档的自定义部分有一些非常好的示例,说明了如何在自定义部分创建自定义解析器和渲染器:http://commonmark.thephpleague.com/

Smart Punctuation 包也是实现完整功能的良好示例:https://github.com/thephpleague/commonmark-ext-smartpunct。特别是,请注意扩展类的存在,以及您可以将它添加到 app/config/markdown.php 文件中的扩展数组。如果您在配置文件夹中看不到此文件,您需要运行 php artisan vendor:publish

安全

如果您在此包中发现安全漏洞,请向 Graham Campbell 发送电子邮件至 graham@alt-three.com。所有安全漏洞都将得到及时解决。您可以在此查看我们的完整安全策略。

许可

Laravel Markdown 使用 The MIT License (MIT) 许可。

企业版

作为 Tidelift 订阅的一部分提供

graham-campbell/markdown 的维护者以及成千上万的其他软件包维护者正在与 Tidelift 合作,为构建应用程序时使用的开源依赖项提供商业支持和维护。通过这种方式,您可以节省时间,降低风险,并提高代码质量,同时为使用的确切依赖项的维护者支付费用。 了解更多。