maglnet /
提供了一种ZF2视图助手,用于渲染Markdown语法。它使用第三方库进行渲染,并且可以在不同的渲染器之间进行切换。
Requires
- php: ^7.3 || ^8.0
- ext-curl: *
- ext-json: *
- container-interop/container-interop: ^1.1
- erusev/parsedown: ^1.6
- erusev/parsedown-extra: ~0.5
- laminas/laminas-cache: ^2.3 || ^3.0
- laminas/laminas-cache-storage-adapter-memory: ^2.0
- laminas/laminas-cache-storage-deprecated-factory: ^1.0
- laminas/laminas-eventmanager: ^2.4 || ^3.0
- laminas/laminas-http: ^2.4
- laminas/laminas-modulemanager: ^2.4
- laminas/laminas-mvc: ^2.4 || ^3.0
- laminas/laminas-servicemanager: ^2.4 || ^3.1.1
- laminas/laminas-stdlib: ^2.4 || ^3.0
- laminas/laminas-view: ^2.4
- league/commonmark: ^0.18 || ^1.5.0 || ^2.0.0
- michelf/php-markdown: ^1.4
Requires (Dev)
- laminas/laminas-i18n: ^2.4
- laminas/laminas-serializer: ^2.4
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-08-25 02:41:34 UTC
README
简介
MaglMarkdown是一个ZF2模块,它添加了一个视图助手来转换Markdown。要切换不同的渲染器,请查看配置部分
您可以使用以下解析器来处理Markdown
- 来自Michel Fortin的PHP-Markdown解析器
- 来自Michel Fortin的PHP-MarkdownExtra解析器(默认选择)
- 来自Emanuil Rusev的Parsedown解析器
- 来自Emanuil Rusev的Parsedown-Extra解析器
- Github Markdown API
- 您应该在配置中提供一个access_token,以避免过早触发rate_limit
- 如果您使用GitHub API,强烈建议启用缓存,以避免因rate_limit而影响性能
- PHP League的CommonMark实现
安装
您可以通过将以下“require”添加到您的composer.json
文件中,使用composer安装此模块
{ "require": { "maglnet/magl-markdown": "~1.1" } }
之后,您需要运行
$ php composer.phar update
并在您的application.config.php
中启用该模块
array( 'modules' => array( 'Application', 'MaglMarkdown', ), );
使用方法
视图助手
只需在视图中按如下方式使用即可
$this->markdown('Yes, **this** is *Markdown*!');
服务管理器
您可以通过服务管理器获取MarkdownService,以便在您的zf2应用程序的任何位置使用render()
方法。MarkdownService
会在配置中启用缓存的情况下自动使用缓存。
/* @var $markdownService MaglMarkdown\Service\Markdown */ $markdownService = $serviceManager->get('MaglMarkdown\MarkdownService'); $html = $markdownService->render('Yes, **this** is *Markdown*!');
您还可以通过服务管理器获取MarkdownAdapter,并使用transformText()
将Markdown渲染为HTML。
这已经不再推荐使用。请改用上面提到的MarkdownService
,因为它可以使用提供的缓存机制。
/* @var $markdownAdapter MaglMarkdown\Adapter\MarkdownAdapterInterface */ $markdownAdapter = $serviceManager->get('MaglMarkdown\MarkdownAdapter'); $html = $markdownAdapter->transformText('Yes, **this** is *Markdown*!');
安全警告
您应该注意,您的Markdown可能包含不安全的内容(例如用户生成的内容)。因此,请使用HTMLPurifier之类的工具来清理输出。
配置
将提供的配置文件config/maglmarkdown.local.php
复制到您的自动加载目录YourZF2Application/config/autoload/maglmarkdown.local.php
,并根据您的需要进行调整。
默认使用Michel Fortin的PHP-MarkdownExtra解析器。
缓存
默认情况下,缓存是禁用的。要启用缓存,请将config/maglmarkdown.local.php
中的cache_enabled
设置为true
。如果您有大型Markdown文件/文本,或者使用依赖于第三方API的Adapter(这些API可能受到速率限制或渲染时间较长),缓存可能非常有用。
默认配置了一个简单的文件系统缓存,但您也可以配置自己的适配器。
添加自己的解析器
您可以添加自己的解析器实现。
您需要做的就是编写一个实现了 MaglMarkdown\Adapter\MarkdownAdapterInterface
接口的类,并通过服务管理器使其可用。
之后,重写别名 MaglMarkdown\MarkdownAdapter
指向您的自定义适配器。
MaglMarkdown 将使用此类来转换 Markdown。
array( 'aliases' => array( 'MaglMarkdown\MarkdownAdapter' => 'Your\Own\MarkdownAdapter', //needs to implement MaglMarkdown\Adapter\MarkdownAdapterInterface ), )
事件
Markdown 服务触发两个您可以监听的事件
markdown.render.pre
在渲染前(带有 Markdown 文本作为参数)markdown.render.post
在渲染后(带有渲染后的 Markdown 作为参数)
这些事件目前仅用于集成缓存功能,但您可以对这些事件做任何您想做的事情。
贡献者
MaglMarkdown 由 Matthias Glaub 和 贡献者 开发。
许可协议
MaglMarkdown 根据 MIT 许可协议授权。
请参阅包含的 LICENSE 文件。
基于 PHP Markdown Lib
版权所有 (c) 2004-2013 Michel Fortin
http://michelf.ca/
保留所有权利。
基于 parsedown
版权所有 (c) 2013 Emanuil Rusev
http://erusev.com/
保留所有权利。
基于 The PHP League 的 Common Mark 实现
版权所有 (c) 2014, Colin O'Dell
https://github.com/thephpleague/commonmark
保留所有权利。
基于 Markdown
版权所有 (c) 2003-2005 John Gruber
http://daringfireball.net/
保留所有权利。