alanchang15/markdown

Markdown 是 Laravel 的 CommonMark 包装器


README

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

Banner

Build Status StyleCI Status Software License Packagist Downloads Latest Version

安装

Laravel Markdown 需要 PHP 7.2-8.1。这个版本支持 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中的提供者数组中添加此类。此类将设置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

安全

如果您在此包中发现安全漏洞,请发送电子邮件到security@tidelift.com。所有安全漏洞都将得到及时解决。您可以在这里查看我们的完整安全策略:[链接](https://github.com/GrahamCampbell/Laravel-Markdown/security/policy)

许可证

Laravel Markdown是在MIT许可证(MIT)下授权的。

企业版

作为Tidelift订阅的一部分提供

graham-campbell/markdown的维护者以及成千上万的包维护者正在与Tidelift合作,为构建应用程序时使用的开源依赖项提供商业支持和维护。节省时间,降低风险,并提高代码质量,同时为使用的确切依赖项支付维护者。了解更多信息:[链接](https://tidelift.com/subscription/pkg/packagist-graham-campbell-markdown?utm_source=packagist-graham-campbell-markdown&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)