使用服务扩展 blade
Extending blade with a service
我安装了graham-campbell/markdown,它在控制器中工作。我想将它的功能扩展到 blade 这样我就可以使用 @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);
});
虽然不赞成,但我尝试将降价 class 注入视图
@inject('markdown', 'GrahamCampbell\Markdown\Facades\Markdown')
错误不再显示,只是显示$comment->comment
。
如果我输入 @markdown(foo **this**)
,我会得到 'foo this',就像我期望的那样。如何提取'$comment->comment'的内容提交给markdown编译器解析?
此外,是否可以在没有 Facades 注入的情况下做到这一点?
[编辑]
我已经解决了只打印 $comment->comment
的问题。我删除了对 AppServiceProvider 的任何更改...我删除了该 use 语句和 blade 指令,并仅在 view
中使用以下内容
@inject('markdown', 'GrahamCampbell\Markdown\Facades\Markdown')
{!! $markdown::convertToHtml($comment->comment) !!}
但我仍然对使用指令 @markdown($variable)
而不需要注入感兴趣。
第一行代码正确,只是需要添加{}而不是(),请参考this answer。
所以您需要这样输入:{$expression}
而不是 ($expression)
。
这里还有关于 how to create a custom directive and you can check laracasts 的很好的教程。
我安装了graham-campbell/markdown,它在控制器中工作。我想将它的功能扩展到 blade 这样我就可以使用 @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);
});
虽然不赞成,但我尝试将降价 class 注入视图
@inject('markdown', 'GrahamCampbell\Markdown\Facades\Markdown')
错误不再显示,只是显示$comment->comment
。
如果我输入 @markdown(foo **this**)
,我会得到 'foo this',就像我期望的那样。如何提取'$comment->comment'的内容提交给markdown编译器解析?
此外,是否可以在没有 Facades 注入的情况下做到这一点?
[编辑]
我已经解决了只打印 $comment->comment
的问题。我删除了对 AppServiceProvider 的任何更改...我删除了该 use 语句和 blade 指令,并仅在 view
@inject('markdown', 'GrahamCampbell\Markdown\Facades\Markdown')
{!! $markdown::convertToHtml($comment->comment) !!}
但我仍然对使用指令 @markdown($variable)
而不需要注入感兴趣。
第一行代码正确,只是需要添加{}而不是(),请参考this answer。
所以您需要这样输入:{$expression}
而不是 ($expression)
。
这里还有关于 how to create a custom directive and you can check laracasts 的很好的教程。