1

我已经安装了 laravel 8 和全新安装的 LiveWire 身份验证脚手架,但是当我添加图像时它不显示,如果我尝试在 aq new 选项卡中加载图像,它会重定向到索引页面

我添加了如下图片

<img src="{{asset( Auth::user()->profile_photo_url) }}" />

我可能做错了什么或者我可能会错过什么?

4

1 回答 1

2

快速回答

您不必使用asset()来显示图像,您可以在该属性中轻松获得完整的图像 URL。因此,它应该只是

<img src="{{ auth()->user()->profile_photo_url }}" />

长答案

如果你能找到那个profile_photo_url属性的来源,它可以在Laravel\Jetstream\HasProfilePhototrait 中找到,你会看到它被定义为

/**
 * Get the URL to the user's profile photo.
 *
 * @return string
 */
public function getProfilePhotoUrlAttribute()
{
    return $this->profile_photo_path
                ? Storage::disk($this->profilePhotoDisk())->url($this->profile_photo_path)
                : $this->defaultProfilePhotoUrl();
}

这意味着如果有个人资料照片,则获取定义个人资料照片的磁盘的 URL - 否则,获取默认的(使用ui-avatars.com)。

所以这意味着我们必须了解这些Storage::disk(..)->url(..)方法,并弄清楚我们正在使用什么磁盘。默认磁盘是公共磁盘(您可以相信我的话,或者检查profilePhotoDisk()相同特征中的方法)。

所以我们现在知道照片将存储在公共磁盘下的存储中。接下来,我们需要弄清楚该url()方法的作用。它本质上会生成实际图像的路径,所有这些都可以在图像源标签中使用。这反过来意味着您不需要profile_photo_url通过该方法运行该属性asset()!另一个原因是,如果源是外部的,您将无法获得实际图像,即来自ui-avatars.com.

于 2020-09-18T15:00:36.327 回答