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.)
Vous devez également ajouter le nœud
CommonMarkCoreExtension
或InlinesOnlyExtension
,因为它们为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).