目标:如果文件存在,加载文件,否则加载default.png
。
我已经试过了
@if(file_exists(public_path().'/images/photos/account/{{Auth::user()->account_id}}.png'))
<img src="/images/photos/account/{{Auth::user()->account_id}}.png" alt="">
@else
<img src="/images/photos/account/default.png" alt="">
@endif
后果
它一直加载我的默认图像,而我100%确定1002.png
存在。
如何正确检查该文件是否存在?
尽可能减少if语句的数量。例如,我会做以下事情:
// User Model
public function photo()
{
if (file_exists( public_path() . '/images/photos/account/' . $this->account_id . '.png')) {
return '/images/photos/account/' . $this->account_id .'.png';
} else {
return '/images/photos/account/default.png';
}
}
// Blade Template
<img src="{!! Auth::user()->photo() !!}" alt="">
使您的模板更干净,使用更少的代码。你也可以写一个单元测试这个方法来测试你的语句:-)
使用“file::”检查操作中是否存在文件,并将结果传递给视图
$result = File::exists($myfile);
解决方案
@if(file_exists( public_path().'/images/photos/account/'.Auth::user()->account_id.'.png' ))
<img src="/images/photos/account/{{Auth::user()->account_id}}.png" alt="">
@else
<img src="/images/photos/account/default.png" alt="">
@endif