【问题标题】:Using Parsedown in Laravel 5.6.3在 Laravel 5.6.3 中使用 Parsedown
【发布时间】:2018-07-30 14:29:00
【问题描述】:

我正在尝试在 Laravel 5.6.3 中使用 Parsedown。据我所知,Composer 包是自动加载到 Laravel 中的,所以我应该可以这样做:

{{ Parsedown('## Hello World!') }}

但是当我尝试这样做时,我得到:

调用未定义的函数 Parsedown()。

所以我尝试使用以下内容创建 Parsedown 对象:

{{ $parsedown = new \Parsedown() }}

然后我明白了

htmlspecialchars() 期望参数 1 是字符串,给定对象

起初我以为这与 Laravel 的自动加载器有关,但当我从 vlucas/dotenv 请求某些内容时,我得到了我期望的结果:

<p>{{ getenv('APP_NAME') }}</p> 输出Laravel

我不确定我哪里出错了。我在 Laravel 文档中也找不到任何可以帮助我的东西。


编辑

@AlexeyMezenin 的回答是正确的,它回答了我原来的问题。但是它不允许渲染我的降价。以下两行是正确的,允许渲染 markdown:

@php($parsedown = new Parsedown())
<?= $parsedown->text('Hello _Parsedown_!'); ?>

刀片模板引擎似乎在回显 parsedown 时遇到问题。添加此编辑是为了帮助遇到与我相同问题的其他用户。

【问题讨论】:

    标签: php laravel composer-php


    【解决方案1】:

    {{}} 将被 Blade 引擎渲染为 echo。所以,所以改变这个:

    {{ $parsedown = new \Parsedown() }}
    

    收件人:

    @php($parsedown = new \Parsedown())
    

    或者:

    @php
        $parsedown = new \Parsedown();
    @endphp
    

    或者:

    <?php $parsedown = new \Parsedown(); ?>
    

    【讨论】:

    • 我们又近了一步!我现在收到Function name must be a string
    • @mohnjatthews 我认为该错误与您显示的代码无关。这意味着您已经修复了错误,现在您需要修复与第一个错误无关的下一个错误。
    • 是的,你是对的@AlexeyMezenin。此更改后不会出现此错误!
    • 好点@AlexeyMezenin。我会努力修复这个新错误,并在允许后(4 分钟内)将您的答案标记为正确。
    【解决方案2】:

    您是否使用 composer 安装了parsedown/laravel?这应该可以解决您的问题,如https://github.com/parsedown/laravel的文档中所述

    【讨论】:

    • 感谢尼科的建议。但是,Laravel 5.6.3 已经预先打包了 Parsedown (seen here)。
    • 你确定包parsedown/laravelerusev/parsedown是一样的吗?我想说这是两个完全独立的项目——第一个提供 Parsedown 与 Laravel 项目的集成(取决于第二个),第二个只是提供 Parsedown 本身......
    • 据我所知,这两个包之间的区别在于parsedown/laravel 允许在刀片模板中使用 Parsedown,而erusev/parsedown 包则不允许。 Laravel 会与独立版本一起打包,而不是专门用于 Laravel 的版本,这似乎很奇怪。感谢您向我指出这一点。
    猜你喜欢
    • 1970-01-01
    • 2018-11-08
    • 2017-08-23
    • 2017-04-07
    • 2018-07-24
    • 2018-08-29
    • 2015-05-14
    • 2015-10-04
    • 2017-04-09
    相关资源
    最近更新 更多