【发布时间】:2018-08-11 08:42:06
【问题描述】:
我安装了graham-campbell/markdown,它在控制器中工作。我想将它的功能扩展到刀片,所以我可以使用@markdown($variable),但不知道如何实现。
这就是我的 AppServiceProvider 的启动方法在添加刀片指令后的样子。
public function boot()
{
Schema::defaultStringLength(191);
Blade::directive('markdown', function ($expression) {
return "<?php echo Markdown::convertToHtml($expression); ?>";
});
}
在我看来
@markdown($comment->comment)
但我收到以下错误:
Class 'Markdown' not found (View: C:\xampp\htdocs\portfolio\portfolio\resources\views\blog.blade.php)
我在 AppServiceProvider 文件的顶部添加了use:
use GrahamCampbell\Markdown\Facades\Markdown;
仍然是同样的错误。我什至尝试了以下指令,而不是我之前发布的指令:
Blade::directive('markdown', function ($expression) {
return Markdown::convertToHtml($expression);
});
虽然不受欢迎,但我尝试将 markdown 类注入到视图中
@inject('markdown', 'GrahamCampbell\Markdown\Facades\Markdown')
错误不再显示,而只是显示$comment->comment。
如果我输入@markdown(foo **this**),我会得到'foo this',就像我期望的那样。如何提取'$comment->comment'的内容并提交给markdown编译器解析?
另外,是否可以在不注入 Facades 的情况下做到这一点?
[编辑]
我已经解决了我的问题,它只打印$comment->comment。我已删除对 AppServiceProvider 的任何更改...我已删除该 use 语句和刀片指令,并且仅在视图中使用以下内容
@inject('markdown', 'GrahamCampbell\Markdown\Facades\Markdown')
{!! $markdown::convertToHtml($comment->comment) !!}
但我仍然对使用指令@markdown($variable) 而不需要注入很感兴趣。
【问题讨论】:
标签: php laravel-5 blade laravel-blade laravel-5.6