Aucun moteur de rendu trouvé pour le type de nœud : League\Commonmark + Drupal
P粉144705065
P粉144705065 2024-01-16 13:52:24
0
1
389

J'essaie de restituer le démarque en utilisant LeagueCommonmark 2.3.8 et l'extension dans Drupal et lorsque j'essaie de restituer en utilisant l'extension, j'obtiens l'erreur suivante :

Impossible de trouver le moteur de rendu correspondant au type de nœud LeagueCommonMarkNodeBlockDocument

Voici mon 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;
  }

}

Le problème est lié à la façon dont je crée l'environnement. Je le sais parce que j'ai remplacé process() comme suit et la conversion markdown fonctionne comme prévu :

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

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

    return new FilterProcessResult("$converted_text");
  }

J'ai également tout supprimé addExtension 行并得到了相同的错误,所以问题是 new Environment($this->config).

Puis j'ai essayé d'initialiser sans configuration : new Environment([]) mais j'ai toujours la même erreur.

Alors, qu'est-ce que j'ai fait de mal ?

(Drupal a un module markdown, mais je ne peux pas l'utiliser car je migre le site vers Drupal 10 et le module n'est pas compatible.)

P粉144705065
P粉144705065

répondre à tous(1)
P粉642920522

Vous devez également ajouter le nœud CommonMarkCoreExtensionInlinesOnlyExtension,因为它们为 Document 等内容提供解析器和渲染器>段落文本. (Alternativement, si vous avez besoin de plus de contrôle sur les grammaires incluses ou exclues, vous pouvez enregistrer manuellement vous-même des analyseurs et des moteurs de rendu individuels).

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!