ultrono / markdown
Markdown 是 Laravel 的 CommonMark 包装器
Requires
- php: ^7.4.15 || ^8.0.2
- illuminate/contracts: ^8.75 || ^9.0 || ^10.0
- illuminate/filesystem: ^8.75 || ^9.0 || ^10.0
- illuminate/support: ^8.75 || ^9.0 || ^10.0
- illuminate/view: ^8.75 || ^9.0 || ^10.0
- league/commonmark: ^2.3.1
Requires (Dev)
- graham-campbell/analyzer: ^3.1
- graham-campbell/testbench: ^5.7
- mockery/mockery: ^1.5
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-18 00:36:04 UTC
README
此存储库是 GrahamCampbell/Laravel-Markdown 的临时分支,增加了 Laravel 10 支持。当 GrahamCampbell#175 合并时将删除。
Laravel Markdown
Laravel Markdown 由 Graham Campbell 创建并维护,是 CommonMark 的 Laravel 包装器。它还提供了与 Laravel 视图系统的集成。您可以查看 变更日志、版本发布、安全策略、许可、行为准则 以及 贡献指南。
安装
此版本需要 PHP 7.4-8.1 并支持 Laravel 8-9。
要获取最新版本,只需使用 Composer 引入项目
$ composer require graham-campbell/markdown:^14.0
安装后,如果您没有使用自动包发现,那么您需要在您的 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 Illuminate\Support\Facades\App; 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::make(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/。
安全
如果您在此包中发现安全漏洞,请发送电子邮件至security@tidelift.com。所有安全漏洞都将得到及时解决。您可以在此处查看我们的完整安全策略这里。
许可协议
Laravel Markdown受MIT许可协议(MIT)许可。
企业版
作为Tidelift订阅的一部分提供
graham-campbell/markdown
的维护者以及成千上万的其他包维护者正在与Tidelift合作,为构建应用程序时使用的开源依赖项提供商业支持和维护。节省时间,降低风险,并提高代码健康,同时为使用的确切依赖项支付维护者。了解更多信息。