Как я могу отобразить значок в зависимости от типа файла в представлении с помощью Laravel 7?

Здравствуйте и спасибо, что нашли время, чтобы помочь мне с моим вопросом. У меня есть приложение для задач, которое отлично работает. Когда вы загружаете изображения, вы можете видеть их миниатюры и даже нажимать на них и перенаправляться на новую вкладку для просмотра изображений в масштабе 100%. Проблема в том, что когда клиент загружает PDF-файл, значок отображается как значок сломанного изображения. Это имеет смысл, поскольку тег img внутри тега a, очевидно, является значком изображения.

Мой вопрос заключается в том, как я могу указать в моем show.blade.php, что это изображение, когда это изображение, и pdf или dox, когда это pdf или doc? Как я уже сказал, приложение работает, поэтому единственный код, который меня беспокоит, это следующий (если я не ошибаюсь, пожалуйста, дайте мне знать):

...
<a data-toggle="" href="/storage/upload/{{ $images[$i]['name'] }}" target="_blank">
    <img src="/storage/upload/{{ $images[$i]['name'] }}" class="image-fluid w-50">
 </a>

               </div>
               @endfor
               @else
               <p class="ml-3 mb-1">No files found</p>
               @endif

           </div>

Я ищу что-то вроде условного, в котором говорится: если img, отобразите большой палец, если нет, отобразите значок, представляющий файл.

Любая помощь по этому вопросу будет принята с благодарностью. Заранее спасибо.


person Erik James Robles    schedule 29.09.2020    source источник


Ответы (1)


Чтобы заставить это работать, я изменил приведенный выше код на следующий:

     @if (in_array($extension = pathinfo($images[$i]['name'], PATHINFO_EXTENSION), ['jpg', 'png', 'bmp']))
        <a data-toggle="" href="/storage/upload/{{ $images[$i]['name'] }}" target="_blank">
            <img src="/storage/upload/{{ $images[$i]['name'] }}" class="image-fluid w-50">
         </a>
     @else
         <a data-toggle="" href="/storage/upload/{{ $images[$i]['name'] }}" target="_blank">
            <img src="{{ "/icons/{$extension}.jpg" }}" class="image-fluid w-50">
         </a>
     @endif
    
     </div>
   @endfor
   @else
   <p class="ml-3 mb-1">No images found</p>
   @endif
    
    </div>

Затем я добавил папку с значками и заполнил ее изображениями значков в формате jpg. Я надеюсь, что это поможет кому-то еще с той же проблемой.

person Erik James Robles    schedule 29.09.2020