无法从Markdown呈现HTML

时间:2016-07-10 23:42:44

标签: laravel laravel-5 commonmark

我正在浏览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);
   } 
}

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:2)

这是因为IoC正在解析CommonMarkConverter的依赖关系,特别是使用所有 null 属性实例化的环境。

您可以使用特定于Laravel的集成来解决此问题:https://github.com/GrahamCampbell/Laravel-Markdown

或者您可以通过这种方式绑定和实例到服务容器:

AppServiceProviderregister方法中添加以下内容:

$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);
});

现在从CommonMarkConverter构造函数中删除Presenter添加使用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);
   } 
}

答案 1 :(得分:0)

您只需在data = data.Join( _context.TableB, groupByQuery => groupByQuery.TableAId , TableA => TableA.Id, (groupByQuery, TableAItem) => new { TableAId = groupByQuery.Id, Count = groupByQuery.Count, TableAItem = TableAItem } ); 文件中添加一行

config/app.php