无法从 Markdown 渲染 HTML
Unable to render HTML from Markdown
我正在 Laravel 上在线课程。本课程使用 League\commonmark 包将 markdown 转换为 html.
每当在应用程序中使用包时,我得到:
Unable to find corresponding renderer for block type League\CommonMark\Block\Element\Document
该应用使用以下演示器进行转换。
class PagePresenter extends AbstractPresenter
{
protected $markdown;
public function __construct($object, CommonMarkConverter $markdown)
{
$this->markdown = $markdown;
parent::__construct($object);
}
public function contentHtml()
{
return $this->markdown->convertToHtml($this->content);
}
}
任何人都可以指出我正确的方向吗?
发生这种情况是因为 IoC 正在解析 CommonMarkConverter
的依赖关系,特别是使用所有 null 属性实例化的环境。
您或许可以通过使用 Laravel 特定集成来解决此问题:https://github.com/GrahamCampbell/Laravel-Markdown
或者您可以通过这种方式将实例绑定到服务容器:
在您的 AppServiceProvider
、register
方法中添加:
$this->app->singleton('Markdown', function ($app) {
// Obtain a pre-configured Environment with all the CommonMark parsers/renderers ready-to-go
$environment = \League\CommonMark\Environment::createCommonMarkEnvironment();
// Define your configuration:
$config = ['html_input' => 'escape'];
// Create the converter
return new \League\CommonMark\CommonMarkConverter($config, $environment);
});
现在从 Presenter
构造函数中删除 CommonMarkConverter
添加使用 app('Markdown')
:
class PagePresenter extends AbstractPresenter {
protected $markdown;
public function __construct($object)
{
$this->markdown = app('Markdown');
parent::__construct($object);
}
public function contentHtml()
{
return $this->markdown->convertToHtml($this->content);
}
}
您只需在 config/app.php
文件中添加一行
'Markdown' => GrahamCampbell\Markdown\Facades\Markdown::class,
我正在 Laravel 上在线课程。本课程使用 League\commonmark 包将 markdown 转换为 html.
每当在应用程序中使用包时,我得到:
Unable to find corresponding renderer for block type League\CommonMark\Block\Element\Document
该应用使用以下演示器进行转换。
class PagePresenter extends AbstractPresenter
{
protected $markdown;
public function __construct($object, CommonMarkConverter $markdown)
{
$this->markdown = $markdown;
parent::__construct($object);
}
public function contentHtml()
{
return $this->markdown->convertToHtml($this->content);
}
}
任何人都可以指出我正确的方向吗?
发生这种情况是因为 IoC 正在解析 CommonMarkConverter
的依赖关系,特别是使用所有 null 属性实例化的环境。
您或许可以通过使用 Laravel 特定集成来解决此问题:https://github.com/GrahamCampbell/Laravel-Markdown
或者您可以通过这种方式将实例绑定到服务容器:
在您的 AppServiceProvider
、register
方法中添加:
$this->app->singleton('Markdown', function ($app) {
// Obtain a pre-configured Environment with all the CommonMark parsers/renderers ready-to-go
$environment = \League\CommonMark\Environment::createCommonMarkEnvironment();
// Define your configuration:
$config = ['html_input' => 'escape'];
// Create the converter
return new \League\CommonMark\CommonMarkConverter($config, $environment);
});
现在从 Presenter
构造函数中删除 CommonMarkConverter
添加使用 app('Markdown')
:
class PagePresenter extends AbstractPresenter {
protected $markdown;
public function __construct($object)
{
$this->markdown = app('Markdown');
parent::__construct($object);
}
public function contentHtml()
{
return $this->markdown->convertToHtml($this->content);
}
}
您只需在 config/app.php
文件中添加一行
'Markdown' => GrahamCampbell\Markdown\Facades\Markdown::class,