Heim  >  Fragen und Antworten  >  Hauptteil

Für den Knotentyp League\Commonmark + Drupal wurde kein Renderer gefunden

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粉144705065P粉144705065251 Tage vor397

Antworte allen(1)Ich werde antworten

  • P粉642920522

    P粉6429205222024-01-17 10:19:19

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

    Antwort
    0
  • StornierenAntwort