yivoff / commonmark-bundle
Symfony 6.2+ 应用程序集成的 League CommonMark Bundle
Requires
- php: ^8.2
- league/commonmark: ^2.2.0
- symfony/config: ^6.3 || ^7.0
- symfony/dependency-injection: ^6.3 || ^7.0
- symfony/framework-bundle: ^6.3 || ^7.0
- symfony/http-kernel: ^6.3 || ^7.0
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.8.2
- matthiasnoback/symfony-config-test: ^v5.1.0
- nyholm/symfony-bundle-test: dev-master
- roave/security-advisories: dev-master
- symfony/filesystem: ^6.3 || ^7.0
- symfony/phpunit-bridge: ^6.3 || ^7.0
- symfony/twig-bundle: ^6.3 || ^7.0
- symfony/yaml: ^6.3 || ^7.0
README
一个 Symfony 5+ 扩展包,用于集成 league/commonmark v2,允许您设置多个 Commonmark 转换器。
需求
此扩展包需要 PHP 8+ 和 Symfony 5+。
安装
composer require yivoff/commonmark-bundle
如果您由于某些原因在未使用 Symfony Flex 的情况下运行,请像往常一样启用扩展包,将 Yivoff\CommonmarkBundle\YivoffCommonmarkBundle
添加到扩展包数组中。
配置
您需要启用至少一个转换器才能使用此扩展包。在路径 config/packages/aymdev_commonmark.yaml
处创建一个 YAML 配置文件。以下是一个示例配置,声明了 2 个转换器
yivoff_commonmark: converters: commonmark: options: commonmark: enable_em: false github: type: github my_custom: type: custom extensions: - League\CommonMark\Extension\Autolink\AutolinkExtension - League\CommonMark\Extension\InlinesOnly\InlinesOnlyExtension
设置至少一个转换器是强制性的,但所有设置都是可选的。默认情况下,未设置 type
的转换器将作为 CommonMark 转换器创建。
转换器类型
可以使用 type
键在 CommonMark、GitHub Flavoured 或 自定义 转换器之间进行选择。
默认情况下,如果没有选择 type
,则选择 CommonMark。
转换器选项
可以使用 options
键以数组形式传递给转换器的配置。
请参阅 CommonMark 文档 了解更多关于可用选项的信息。
转换器扩展
CommonMark 和 GitHub Flavoured 都安装了预定义的一组扩展,这不能更改。
但 custom
开始时没有扩展,您可以使用 extensions
键选择您想要启用的 扩展。
此 key
对 github
或 commonmark
类型转换器没有影响。
使用转换器
作为服务
定义的每个转换器都作为容器中的服务可用。
标识符的生成格式如下:yivoff_commonmark.converters.converter_name
。
对于配置示例中的转换器,将生成三个服务
yivoff_commonmark.converters.commonmark
yivoff_commonmark.converters.github
yivoff_commonmark.converters.my_custom
此外,此扩展包为每个服务注册了一个别名,因此可以直接用于自动装配。
再次,对于上述示例,注册的别名将是
League\CommonMark\ConverterInterface $commonmark
League\CommonMark\ConverterInterface $github
League\CommonMark\ConverterInterface $myCustom
在模板中使用
此扩展包定义了一个 Twig 过滤器:commonmark
。
如果您定义了多个转换器,则需要传递您想要使用的转换器的名称
{{ some_markdown_content|commonmark('github') }}
但如果您只定义了一个转换器,则可以省略参数。
{{ some_markdown_content|commonmark }}