Für den Knotentyp League\Commonmark + Drupal wurde kein Renderer gefunden
P粉144705065
P粉144705065 2024-01-16 13:52:24
0
1
442

Ich versuche, Markdown mit LeagueCommonmark 2.3.8 und der Erweiterung in Drupal zu rendern, und wenn ich versuche, mit der Erweiterung zu rendern, erhalte ich die folgende Fehlermeldung:

Der dem Knotentyp entsprechende Renderer konnte nicht gefunden werden LeagueCommonMarkNodeBlockDocument

Das ist mein Code:

class FilterMarkdown extends FilterBase {

  /**
   * @var array The private config array.
   *
   * https://commonmark.thephpleague.com/2.3/configuration/.
   */
  private array $config = [
    // Allow because only the admin has markdown access.
    'html_input' => 'allow',
    'allow_unsafe_links' => false,
  ];

  /**
   * {@inheritdoc}
   */
  public function process($text, $langcode): FilterProcessResult {
    $converter = new MarkdownConverter($this->createEnvironment());

    $converted_text = $converter->convert($text);

    return new FilterProcessResult("$converted_text");
  }

  /**
   * Generate an environment with all the extensions we need.
   */
  private function createEnvironment(): Environment {
    $environment = new Environment($this->config);
    $environment->addExtension(new ExternalLinkExtension());
    $environment->addExtension(new HeadingPermalinkExtension());
    $environment->addExtension(new StrikethroughExtension());
    $environment->addExtension(new TableExtension());

    return $environment;
  }

}

Das Problem hängt mit der Art und Weise zusammen, wie ich die Umgebung schaffe. Ich weiß das, weil ich „process()“ wie folgt überschrieben habe und die Markdown-Konvertierung wie erwartet funktioniert:

public function process($text, $langcode): FilterProcessResult {
    $converter = new CommonMarkConverter($this->config);

    $converted_text = $converter->convert($text);

    return new FilterProcessResult("$converted_text");
  }

Ich habe auch alle gelöscht addExtension 行并得到了相同的错误,所以问题是 new Environment($this->config).

Dann habe ich versucht, ohne Konfiguration zu initialisieren: new Environment([])aber ich habe immer noch den gleichen Fehler erhalten.

Was habe ich also falsch gemacht?

(Drupal verfügt über ein Markdown-Modul, aber ich kann es nicht verwenden, da ich die Site auf Drupal 10 migriere und das Modul nicht kompatibel ist.)

P粉144705065
P粉144705065

Antworte allen(1)
P粉642920522

您还需要添加 CommonMarkCoreExtensionInlinesOnlyExtension,因为它们为 Document 等内容提供解析器和渲染器>段落文本 节点。 (或者,如果您需要更多地控制要包含或排除的语法,您可以自己手动注册各个解析器和渲染器)。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage