Cakephp: Показать изображение, если загружено, или показать текст, если изображение не было загружено

Я разрабатываю систему, где пользователь может загрузить до четырех фотографий. Если пользователь не загружает фотографию, мне бы хотелось, чтобы отображался следующий текст: «пусто».

Я подготовил приведенный ниже код, однако мне это не удалось: / Проблема в том, что при загрузке изображения оно по-прежнему печатается «пусто», а загруженное изображение не отображается.

<?php if (file_exists('../files/collection/photo2/' .$collection['Collection']['photo_dir2'] . '/thumb_' . $collection['Collection']['photo2']))
{
echo $this->Html->image('../files/collection/photo2/' . $collection['Collection']['photo_dir2'] . '/thumb_' . $collection['Collection']['photo2']);}
else
{
echo ('empty');
}
?>

Я ценю ваше руководство и помощь 🙂

0

Решение

TLDR: Файл, который вы проверяете, не существует. Исправьте свой путь.

Деталь:
Вы пытаетесь использовать один и тот же путь для обоих ваших HTML <img> а также PHP file_exists() проверять.

Проблема в том, что HTML-изображение ищет файл через браузер пользователя, где file_exists() Метод ищет файл через ваш сервер. Два пути очень редко совпадают.

Попробуйте использовать правильный путь в вашем PHP file_exists() метод, и он должен пройти проверку.

Например:

if(file_exists(APP . 'files' . DS . 'collection' . DS . 'photos2' . $collection['Collection']['photo_dir2'] . DS . 'thumb_' . $collection['Collection']['photo2'])) {
echo $this->Html->image('../files/collection/photo2/' . $collection['Collection']['photo_dir2'] . '/thumb_' . $collection['Collection']['photo2']);
}
else {
echo ('empty');
}
2

Другие решения

Других решений пока нет …