Saya cuba membuat penurunan harga menggunakan LeagueCommonmark 2.3.8 dan sambungan dalam Drupal dan apabila saya cuba untuk membuat menggunakan sambungan itu saya mendapat ralat berikut:
Tidak dapat mencari pemapar yang sepadan dengan jenis nod LeagueCommonMarkNodeBlockDocument
Ini kod saya:
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; } }
Masalahnya berkaitan dengan cara saya mencipta persekitaran. Saya tahu perkara ini kerana saya mengatasi proses() seperti berikut dan penukaran markdown berfungsi seperti yang dijangkakan:
public function process($text, $langcode): FilterProcessResult { $converter = new CommonMarkConverter($this->config); $converted_text = $converter->convert($text); return new FilterProcessResult("$converted_text"); }
Saya juga memadam semua addExtension
行并得到了相同的错误,所以问题是 new Environment($this->config)
.
Kemudian saya cuba memulakan tanpa konfigurasi: new Environment([])
tetapi saya masih mendapat ralat yang sama.
Jadi apa salah saya?
(Drupal mempunyai modul penurunan nilai, tetapi saya tidak boleh menggunakannya kerana saya memindahkan tapak ke Drupal 10 dan modul itu tidak serasi.)
Anda juga perlu menambah nod
CommonMarkCoreExtension
或InlinesOnlyExtension
,因为它们为Document
、等内容提供解析器和渲染器>段落
和文本
. (Sebagai alternatif, jika anda memerlukan lebih kawalan ke atas tatabahasa yang disertakan atau dikecualikan, anda boleh mendaftarkan sendiri penghurai dan pemapar individu secara manual).