Laravel проверяет наличие ассета

Я хотел бы проверить, существует ли актив {{ актив }}, прежде чем пытаться вывести файл.

Я пробовал несколько вещей после некоторого поиска в Google, но, похоже, ни одна из них не работает на Laravel 5.0.

Пример того, как я могу представить себе запрос (в представлении внешнего интерфейса);

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

Спасибо


person Alex    schedule 08.05.2015    source источник


Ответы (3)


Было бы лучше обрабатывать это с веб-сервера, поскольку то, что файл существует, не означает, что он будет доступен для общедоступной сети. Также означает, что вы не повторяете код повсюду, чтобы проверить, существует ли файл, см.: Заменить недопустимый URL изображения на изображение 404

Однако это можно сделать с помощью 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
person Wader    schedule 08.05.2015
comment
В первом предложении вы имеете в виду клиент? - person lukasgeiter; 08.05.2015
comment
@lukasgeiter нет, веб-сервер (Apache, Nginx и т. д.) правильный. В основном то же самое поведение веб-сервера, проверяет, существует ли файл, если нет, перезаписывает, чтобы служить заполнителем изображения 404. - person Wader; 08.05.2015
comment
Спасибо @Wader. В этом конкретном случае обработка изображения 404 в представлении является более подходящей. Отличный ответ, спасибо - person Alex; 08.05.2015

Помимо использования нативных php методов здесь

Вы можете использовать:

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

Тем не менее, вы должны отметить, что asset(...) вернет абсолютный URL-адрес ресурса, но вам нужно проверить его существование в файловой системе, поэтому вам понадобится такой путь:

$img = path('public').'/path/to/image.png';
person fantasitcalbeastly    schedule 08.05.2015

Попробуйте так: Для 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>
person Maizied Hasan Shuvo    schedule 22.10.2020