Laravel 5.2:通过传递对象而不是字符串来延伸刀片

Laravel 5.2:通过传递对象而不是字符串来延伸刀片,laravel,blade,laravel-5.2,Laravel,Blade,Laravel 5.2,我想添加一些刀片指令 我在我的服务提供商中有 Blade::directive('image', function ($media) { return "<?php echo {$media->getImageUrl()}; ?>"; }); $media变量是一个使用media模型的对象,它包含一个公共函数getImageUrl(),该函数返回一个带有图像url的字符串 当我执行这段代码时,我收到了这个错误消息 Fatal error: Call to a memb

我想添加一些刀片指令

我在我的服务提供商中有

Blade::directive('image', function ($media) {
    return "<?php echo {$media->getImageUrl()}; ?>";
});
$media变量是一个使用
media
模型的对象,它包含一个
公共函数getImageUrl()
,该函数返回一个带有图像url的字符串

当我执行这段代码时,我收到了这个错误消息

Fatal error: Call to a member function getImageUrl() on string
Blade指令中传递的对象被视为字符串,而不是媒体对象


有没有办法将$media用作
media
对象而不是字符串?

花括号应该在
$media
周围:

Blade::指令('image',函数($media){
返回“”;
});
这将编译为:

据我所知,刀片指令只接受一个表达式作为字符串,包括函数调用括号。因此,指令接收到的表达式是:

“($media)”

更改指令后,您应该清除已编译的视图,因为Blade正在缓存这些指令,所以您不会看到更改生效

Fatal error: Call to a member function getImageUrl() on string