提供了一种ZF2视图助手,用于渲染Markdown语法。它使用第三方库进行渲染,并且可以在不同的渲染器之间进行切换。


README

Build Status Latest Stable Version License Scrutinizer Code Quality Code Coverage Dependency Status

简介

MaglMarkdown是一个ZF2模块,它添加了一个视图助手来转换Markdown。要切换不同的渲染器,请查看配置部分

您可以使用以下解析器来处理Markdown

安装

您可以通过将以下“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/
保留所有权利。