我安装了graham-campbell/markdown,它可以在控制器中运行。我想将它的功能扩展到刀片,所以我可以使用@markdown($variable)
,但无法弄清楚如何实现它。
使用添加的blade指令,这就是我的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);
});
虽然它不受欢迎,但我试图将降价类注入视图
@inject('markdown', 'GrahamCampbell\Markdown\Facades\Markdown')
错误不再显示,但只显示$comment->comment
。
如果我放@markdown(foo **this**)
我就像我期望的那样'foo 这个'。如何提取'$ comment-&gt; comment'的内容并将其提交以由markdown编译器解析?
另外,没有Facades注射可以做到吗?
[编辑]
我已经解决了我只是打印$comment->comment
的问题。我删除了对AppServiceProvider的任何更改...我已删除了该use语句和blade指令,只是在视图中使用以下内容
@inject('markdown', 'GrahamCampbell\Markdown\Facades\Markdown')
{!! $markdown::convertToHtml($comment->comment) !!}
但是我仍然很有兴趣使用指令@markdown($variable)
而不需要注射。
答案 0 :(得分:2)
第一行代码是正确的,但您需要添加{}而不是(),请参阅this answer。
因此您需要像这样输入:{$expression}
而不是($expression)
。
此处还有关于how to create a custom directive的精彩教程,您可以查看laracasts。