【问题标题】:showing images in Laravel 8 live wire在 Laravel 8 火线中显示图像
【发布时间】:2021-01-05 10:04:08
【问题描述】:
我已经安装了 laravel 8 和全新安装的 LiveWire 身份验证脚手架,但是当我添加图像时它没有显示,如果我尝试在 aq 新选项卡中加载图像,它会重定向到索引页面
我已经添加了如下图片
<img src="{{asset( Auth::user()->profile_photo_url) }}" />
我可能做错了什么或者我可能遗漏了什么?
【问题讨论】:
标签:
laravel
laravel-8
laravel-livewire
【解决方案1】:
快速解答
您不必使用asset() 来显示图像,您可以在该属性中轻松获得完整的图像 URL。因此它应该是
<img src="{{ auth()->user()->profile_photo_url }}" />
长答案
如果您能找到 profile_photo_url 属性的来源(可以在 Laravel\Jetstream\HasProfilePhoto 特征中找到),您会看到它的定义为
/**
* 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 - 否则,获取默认的 URL(使用 ui-avatars.com)。
所以这意味着我们必须了解Storage::disk(..)->url(..) 方法,并弄清楚我们正在使用什么磁盘。默认磁盘是公共磁盘(您可以相信我的话,或者检查同一 trait 中的 profilePhotoDisk() 方法)。
所以我们现在知道照片将存储在公共磁盘下的存储中。接下来,我们需要弄清楚url() 方法的作用。它本质上会生成实际图像的路径,所有这些都可以在图像源标签中使用。这反过来意味着您不需要通过asset() 方法运行profile_photo_url 属性!另一个原因是,如果源是外部的,即来自ui-avatars.com 的默认图像,您将无法获得实际图像。