在Laravel 7和graham campbell/Markdown中为降价添加表扩展
我的应用程序基于Laravel 7,使用了在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
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">
...
...