在Laravel 7和graham campbell/Markdown中为降价添加表扩展

在Laravel 7和graham campbell/Markdown中为降价添加表扩展,laravel,markdown,Laravel,Markdown,我的应用程序基于Laravel 7,使用了graham campbell/markdown v13.1以及webuni/commonmark table extension v2.1 我想用一个类来扩展markdown环境,该类在html中定义了一个表的情况下,向呈现的html输出中添加引导css类table table striped table bordered 我看了很多例子,提出了下面的解决方案,不幸的是,这个解决方案不起作用 我在文件App\Classes\Markdown\AddTa

我的应用程序基于Laravel 7,使用了
graham campbell/markdown v13.1
以及
webuni/commonmark table extension v2.1

我想用一个类来扩展markdown环境,该类在html中定义了一个表的情况下,向呈现的html输出中添加引导css类
table table striped table bordered

我看了很多例子,提出了下面的解决方案,不幸的是,这个解决方案不起作用

我在文件
App\Classes\Markdown\AddTableClassesExtension.php

<?php

namespace App\Classes\Markdown;

use League\CommonMark\ConfigurableEnvironmentInterface;
use League\CommonMark\Extension\ExtensionInterface;
use League\CommonMark\Extension\Table\Table;

class AddTableClassesExtension implements ExtensionInterface
{
    public function register(ConfigurableEnvironmentInterface $environment): void
    {
        $environment
            ->addBlockRenderer(Table::class, new \App\Classes\Markdown\AddTableClassesRenderer())
        ;
    }
}
'extensions' => [
        App\Classes\Markdown\AddTableClassesExtension::class,
        League\CommonMark\Ext\Table\TableExtension::class,
    ],
最后,我将扩展名添加到配置文件
config\markdown.php

<?php

namespace App\Classes\Markdown;

use League\CommonMark\ConfigurableEnvironmentInterface;
use League\CommonMark\Extension\ExtensionInterface;
use League\CommonMark\Extension\Table\Table;

class AddTableClassesExtension implements ExtensionInterface
{
    public function register(ConfigurableEnvironmentInterface $environment): void
    {
        $environment
            ->addBlockRenderer(Table::class, new \App\Classes\Markdown\AddTableClassesRenderer())
        ;
    }
}
'extensions' => [
        App\Classes\Markdown\AddTableClassesExtension::class,
        League\CommonMark\Ext\Table\TableExtension::class,
    ],
此设置创建html表格,但不会将css类添加到表格属性中

当我调试它时,我甚至没有在renderer类中找到我的代码。对于测试,我使用以下方法和
League\CommonMark
()文档中的表格:

我需要做什么才能让这个简单的扩展正常工作


非常感谢您事先的帮助。

在GitHub上的帮助下,我自己解决了这个问题

我重新定义了渲染器类

namespace App\Classes\Markdown;

use League\CommonMark\Event\DocumentParsedEvent;
use League\CommonMark\Ext\Table\Table;

class AddTableClassesRenderer {

    /**
     * @param DocumentParsedEvent $e
     *
     * @return void
     */
    public function __invoke(DocumentParsedEvent $e)
    {
        $walker = $e->getDocument()->walker();

        while ($event = $walker->next()) {
            $node = $event->getNode();
            if ($node instanceof Table) {
                $node->data['attributes'] = array('class' => 'table table-striped table-bordered');
            }
        }
    }

}
我换了扩展类

namespace App\Classes\Markdown;

use League\CommonMark\ConfigurableEnvironmentInterface;
use League\CommonMark\Event\DocumentParsedEvent;
use League\CommonMark\Extension\ExtensionInterface;

class AddTableClassesExtension implements ExtensionInterface
{
    public function register(ConfigurableEnvironmentInterface $environment): void
    {
            $environment
                ->addEventListener(DocumentParsedEvent::class, new AddTableClassesRenderer());
        ;
    }
}
现在,该表包含了相应的类

<table class="table table-striped table-bordered">
   ...

...