Laravel 5.2 :通过传递 object 而不是字符串来扩展 Blade
Laravel 5.2 : Extending Blade by passing an object instead of a string
我想添加一些 blade 指令。
我有我的服务提供商
Blade::directive('image', function ($media) {
return "<?php echo {$media->getImageUrl()}; ?>";
});
blade 文件包含
@image($media)
$media 变量是一个 object,它使用 Media
模型并且包含一个 public function getImageUrl()
,其中 return 一个字符串 url图片。
当我执行此代码时,出现此错误消息
Fatal error: Call to a member function getImageUrl() on string
在Blade指令中传递的object被认为是一个字符串而不是Mediaobject
有什么方法可以将 $media 用作 Media
object 而不是字符串?
大括号应该在$media
:
左右
Blade::directive('image', function ($media) {
return "<?php echo {$media}->getImageUrl(); ?>";
});
编译为:
<?php echo ($media)->getImageUrl(); ?>
据我所知,Blade 指令只接受一个表达式作为字符串,包括函数调用大括号。所以指令接收到的表达式是:
"($media)"
更改指令后,您应该清除已编译的视图,因为 Blade 正在缓存指令,因此您不会看到您的更改生效。
我想添加一些 blade 指令。
我有我的服务提供商
Blade::directive('image', function ($media) {
return "<?php echo {$media->getImageUrl()}; ?>";
});
blade 文件包含
@image($media)
$media 变量是一个 object,它使用 Media
模型并且包含一个 public function getImageUrl()
,其中 return 一个字符串 url图片。
当我执行此代码时,出现此错误消息
Fatal error: Call to a member function getImageUrl() on string
在Blade指令中传递的object被认为是一个字符串而不是Mediaobject
有什么方法可以将 $media 用作 Media
object 而不是字符串?
大括号应该在$media
:
Blade::directive('image', function ($media) {
return "<?php echo {$media}->getImageUrl(); ?>";
});
编译为:
<?php echo ($media)->getImageUrl(); ?>
据我所知,Blade 指令只接受一个表达式作为字符串,包括函数调用大括号。所以指令接收到的表达式是:
"($media)"
更改指令后,您应该清除已编译的视图,因为 Blade 正在缓存指令,因此您不会看到您的更改生效。