8fold / commonmark-partials

PHP League's CommonMark库的扩展,用于启用部分功能。

1.0.0 2023-05-15 19:47 UTC

This package is auto-updated.

Last update: 2024-09-16 02:00:21 UTC


README

这个库是PHP League的CommonMark解析器的扩展,增加了插入可渲染部分的能力。

换句话说,并且非常谦虚,我们可能错了,Markdown可以感觉更像是一个模板引擎。

安装

composer require 8fold/commonmark-partials

用法

⚠️ 警告:此库的使用者负责对内容进行清理。

创建你的部分类

<?php

namespace My\Namespace;

use Eightfold\CommonMarkPartials\PartialInterface;

class MyPartial implements PartialInterface
{
  public function __invoke(
    PartialInput $input, 
    array $extras = []
  ): string {
    return 'Will be processed like any other Markdown input.'
  }
}

用你的部分编写Markdown

# CommonMark Partials

{!! my_partial !!}

实例化CommonMark

use Eightfold\CommonMarkPartials\PartialsExtension;

use My\Namespace\MyPartial;

$environment = new Environment([
  'partials' => [
    'partials' => [
      'my_partial' => MyPartial::class
    ]
  ]
]);

$environment->addExtension(new CommonMarkCoreExtension())
  ->addExtension(new PartialsExtension());

$converter = new MarkdownConverter($environment);

渲染Markdown

$html = $converter->convertToHtml($markdown)->getContents();

打印结果

print $html;

结果应该是

<h1>CommonMark Partials</h1>
<p>Will be processed like any other Markdown input.</p>

如果你想让你的部分返回HTML,你需要更新CommonMark配置以允许HTML

$environment = new Environment([
  'allow_html' => 'allow',
  'partials' => [
    'partials' => [
      'my_partial' => MyPartial::class
    ]
  ]
]);

详细信息

我们希望允许内容创建者使用Markdown创建大部分内容;通过服务器端渲染。有时,我们想要(或需要)根据逻辑代码和数据注入HTML。

我们在一两个网站上实现了这一点,效果很好。现在我们使我们的Markdown库(CommonMark)成为可能。

其他

{链接或描述或许可,版本控制和治理}