Laravel检查资产是否存在

时间:2015-05-08 16:09:13

标签: laravel laravel-5 blade

我想在尝试输出文件之前检查资产{{asset}}是否存在。

我在google之后尝试过一些东西,但似乎没有一个在Laravel 5.0上运行。

我想象的一个例子(在前端刀片视图中)看起来像;

@if(asset(path-to-asset))
   <img src="image-path"/>
@else
   <img src="no-image-path"/>
@endif

由于

3 个答案:

答案 0 :(得分:7)

最好从网络服务器处理这个问题,因为文件存在并不意味着公共网站可以访问它。也意味着您不会在整个地方重复代码以检查文件是否存在,请参阅:Replace invalid image url with 404 image

然而,这可以通过PHP明智地完成

@if (file_exists(public_path('path/to/asset.png')))
    <img src="{{ asset('path/to/asset.png') }}">
@else
    <img src="{{ asset('path/to/missing.png') }}">
@endif

答案 1 :(得分:1)

除了使用原生php方法here

之外

您可以使用:

if (File::exists($myfile)){ ... }

但是,您应该注意asset(...)将返回资产的绝对URL,但您需要在文件系统上检查它是否存在,因此您需要一条路径:

$img = path('public').'/path/to/image.png';

答案 2 :(得分:0)

尝试这种方式: 对于Laravel:

<?php
                        $image = parse_url($user->image);
                        if(isset($image['host'])){
                             $image= $user->image;
                            }
                        else if($image==null){ 
                            $image= Request::root().'/uploads'.'/subsystems_icons/'.'democp.jpg';   
                        }
                        else {
                            $image= Request::root().'/uploads/'.$user->image;
                        }
                    ?>
                   
                <div class="">
                    <img class="image" style="width: 100%; height: 300px; object-fit: contain ;"
                        src="{{$image}}">
                </div>