【问题标题】:How to display an image if it exists or a default if it doesn't如果图像存在,如何显示图像,如果不存在,如何显示默认值
【发布时间】:2018-03-11 18:31:55
【问题描述】:

试图弄清楚如果图像存在如何显示图像,如果不存在则显示默认值。这是我到目前为止所拥有的,但检查文件的语句似乎不起作用:

@if (file_exists(public_path('img/{{ $product->sku }}.jpg')))
    <img src="img/{{$product->sku}}.jpg">
@else
    <img src="img/logo.gif">
@endif

这是我的完整刀片代码。除图像外,一切正常:

<div class="products-gallery">
    <h2>{{$product->prd->description_long}}</h2>
    <p><strong>ITEM SKU:</strong> {{$product->sku}}</p>  
    <p><strong>PRICE:</strong> {{$product->prd->Jobber}}</p>
    @if (file_exists(public_path('img/{{$product->sku}}.jpg')))
        <img src="img/{{$product->sku}}.jpg">
    @else
        <img src="img/logo.gif">
    @endif
</div>

【问题讨论】:

  • 我会打印出public_path('img/{{ $product-&gt;sku }}.jpg')) 并确保它指向正确的目录。还要确保目录和文件具有读取权限。
  • 我收到了/Users/ekko207/Documents/GitHub/api.vogtlandna/public/img/sku); ?&gt;.jpg,所以我不确定如何正确输入 sku
  • 你应该可以做到{{ public_path('img/' . $product-&gt;sku . '.jpg')) }}
  • 给我一个错误Undefined variable: product
  • {{ $product-&gt;sku }} 怎么样?如果 $product 实际上是未定义的,这就是您的代码无法正常工作的原因。

标签: laravel lumen


【解决方案1】:

虽然您询问了Laravel 的实现,但您也应该知道您可以在纯 javascript 中执行此操作并避免验证文件的存在:

<img src="img/{{$product->sku}}.jpg" onerror="this.onerror=null;this.src='img/logo.gif';" />

要编写的代码更少,这也将处理其他错误(例如文件存在但已损坏)。

希望这会有所帮助。

【讨论】:

  • 帮助很大!你真棒!谢谢!
【解决方案2】:
@if (file_exists(public_path().'/img/'.$product->sku))
    <img src="{{ asset('img/'.$product->sku) }}">
@else
    <img src="{{ asset('img/logo.gif') }}">
@endif

图片扩展名(如您提到的.jpg)在您上传时默认保存。希望对您有所帮助!

【讨论】:

  • 调用未定义的函数asset()
【解决方案3】:

使用asset('/img/' . $product->sku . '.jpg') 方法

【讨论】:

  • 我在尝试使用资产时收到Call to undefined function asset()
  • 我在下面编辑过,顺便说一句,您使用的是最新版本的 laravel 吗?
  • 它的流明,但它应该是最新版本。我最初没有设置它,所以我不是 100% 确定
猜你喜欢
  • 2013-11-24
  • 1970-01-01
  • 2012-07-23
  • 1970-01-01
  • 2015-08-10
  • 2013-05-27
  • 1970-01-01
  • 2012-01-31
  • 1970-01-01
相关资源
最近更新 更多