如何在Accessor/Mutator中使用if语句在Laravel 9中?
How to use if statement in Accessor/Mutator in Laravel 9?
在 Laravel 版本 9 上,我尝试使用内部带有 if
条件的访问器;简单地说,我需要为我的应用程序的 postImage
属性使用访问器,只有当图像的路径不以 'http://' 或 'https://' 条款开头时,(这样来自另一个网站的图像源将在其路径中没有任何操作的情况下正确显示)但是我无法根据 Laravel 9 Accessor(和 Mutator)的新语法找到正确的方法。
我的 Post 模型中的 postImage
属性访问器(我知道这是错误的,但我正在尝试找到正确的方法,这就是重点):
protected function postImage():Attribute {
return Attribute::make(
get: fn ($value) =>
if (strpos($value, 'https://') !== FALSE || strpos($value, 'http://') !== FALSE) {
return $value;
}
return asset('storage/' . $value);
);
}
你能帮我找到适合我正在尝试做的事情的新方法吗?
使用其他函数格式(return)
protected function postImage():Attribute {
return Attribute::make(
get: function ($value) {
if (strpos($value, 'https://') !== FALSE || strpos($value, 'http://') !== FALSE) {
return $value;
}
return asset('storage/' . $value);
}
);
}
或正确使用新格式(有值,无return)
protected function postImage():Attribute {
return Attribute::make(
get: fn ($value) => (strpos($value, 'https://') !== FALSE || strpos($value, 'http://') !== FALSE) ? $value : asset('storage/' . $value),
);
}
在 Laravel 版本 9 上,我尝试使用内部带有 if
条件的访问器;简单地说,我需要为我的应用程序的 postImage
属性使用访问器,只有当图像的路径不以 'http://' 或 'https://' 条款开头时,(这样来自另一个网站的图像源将在其路径中没有任何操作的情况下正确显示)但是我无法根据 Laravel 9 Accessor(和 Mutator)的新语法找到正确的方法。
我的 Post 模型中的 postImage
属性访问器(我知道这是错误的,但我正在尝试找到正确的方法,这就是重点):
protected function postImage():Attribute {
return Attribute::make(
get: fn ($value) =>
if (strpos($value, 'https://') !== FALSE || strpos($value, 'http://') !== FALSE) {
return $value;
}
return asset('storage/' . $value);
);
}
你能帮我找到适合我正在尝试做的事情的新方法吗?
使用其他函数格式(return)
protected function postImage():Attribute {
return Attribute::make(
get: function ($value) {
if (strpos($value, 'https://') !== FALSE || strpos($value, 'http://') !== FALSE) {
return $value;
}
return asset('storage/' . $value);
}
);
}
或正确使用新格式(有值,无return)
protected function postImage():Attribute {
return Attribute::make(
get: fn ($value) => (strpos($value, 'https://') !== FALSE || strpos($value, 'http://') !== FALSE) ? $value : asset('storage/' . $value),
);
}