我已经安装了 laravel 8 和全新安装的 LiveWire 身份验证脚手架,但是当我添加图像时它不显示,如果我尝试在 aq new 选项卡中加载图像,它会重定向到索引页面
我添加了如下图片
<img src="{{asset( Auth::user()->profile_photo_url) }}" />
我可能做错了什么或者我可能会错过什么?
我已经安装了 laravel 8 和全新安装的 LiveWire 身份验证脚手架,但是当我添加图像时它不显示,如果我尝试在 aq new 选项卡中加载图像,它会重定向到索引页面
我添加了如下图片
<img src="{{asset( Auth::user()->profile_photo_url) }}" />
我可能做错了什么或者我可能会错过什么?
您不必使用asset()
来显示图像,您可以在该属性中轻松获得完整的图像 URL。因此,它应该只是
<img src="{{ auth()->user()->profile_photo_url }}" />
如果你能找到那个profile_photo_url
属性的来源,它可以在Laravel\Jetstream\HasProfilePhoto
trait 中找到,你会看到它被定义为
/**
* 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
.