bee-b / markdown
Markdown 是 Laravel 的 CommonMark 包装器
Requires
- php: ^7.2.5 || ^8.0
- illuminate/contracts: ^6.0 || ^7.0 || ^8.0
- illuminate/filesystem: ^6.0 || ^7.0 || ^8.0
- illuminate/support: ^6.0 || ^7.0 || ^8.0
- illuminate/view: ^6.0 || ^7.0 || ^8.0
- league/commonmark: ^2.0.0
Requires (Dev)
- graham-campbell/analyzer: ^3.0
- graham-campbell/testbench: ^5.6
- mockery/mockery: ^1.3.1
- phpunit/phpunit: ^8.5.8 || ^9.3.7
- 13.2.x-dev
- 13.1.x-dev
- v13.1.2
- v13.1.1
- v13.1.0
- v13.0.0
- 12.0.x-dev
- v12.0.2
- v12.0.1
- v12.0.0
- 11.2.x-dev
- v11.2.1
- v11.2.0
- v11.1.0
- v11.0.0
- 10.3.x-dev
- v10.3.1
- v10.3.0
- v10.2.0
- v10.1.0
- v10.0.0
- 9.0.x-dev
- v9.0.0
- 8.1.x-dev
- v8.1.0
- v8.0.0
- 7.1.x-dev
- v7.1.0
- v7.0.0
- 6.1.x-dev
- v6.1.0
- v6.0.1
- v6.0.0
- 5.3.x-dev
- v5.3.0
- v5.2.0
- v5.1.0
- v5.0.0
- v4.0.0
- v3.2.0
- v3.1.1
- v3.1.0
- v3.0.2
- v3.0.1
- v3.0.0
- v2.1.0
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v2.0.0-RC1
- v1.1.0
- v1.0.0
- v1.0.0-RC1
- v1.0.0-beta1
- v0.2.0-alpha
- v0.1.0-alpha
This package is auto-updated.
Last update: 2024-09-10 17:33:19 UTC
README
Laravel Markdown 由 GrahamCampbell 创建并维护,是 Laravel 的 CommonMark 包装器。它还包含了与 Laravel 视图系统的集成。您可以查看变更日志、版本发布、安全策略、许可证、行为准则和贡献指南。
安装
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 合作,为构建应用程序时使用的开源依赖项提供商业支持和维护。通过这种方式,您可以节省时间,降低风险,并提高代码质量,同时为使用的确切依赖项的维护者支付费用。 了解更多。