если еще в cakePHP не отображается изображение по умолчанию

Я пытаюсь отобразить изображение по умолчанию в cakePHP, когда запись для пути к файлу с изображением, хранящимся в БД, пуста. То, что я обнаружил, происходит с кодом ниже, это то, что, если запись в БД пуста, отображается изображение по умолчанию, но оно также отображается, если есть запись в БД.

Итак, по какой-то причине, если в БД есть запись, изображение не отображается. Ценю помощь.

Павел

<?php

$image = $this->Html->image(
$news['News']['imgPath'],
array('title' => $news['News']['alt_tag'], 'class' => 'left'),
array('escape' => false));

$default_image = "<img src=\"/FBCW_new2/files/uploads/default.jpg\" class=\"left\" alt=\"default image\"/>";

if(file_exists("$image")) $filename = $image;

else $filename = $default_image;

echo $filename;
?>

Разрешение:
Так как $ image является html-строкой, я добавил переменную, чтобы сначала проверить, был ли путь к файлу пуст, а затем установил по нему $ filename.

        $photo = $news['News']['imgPath'];
$image = $this->Html->image(
$news['News']['imgPath'],
array('title' => $news['News']['alt_tag'], 'class' => 'left'),
array('escape' => false));

$default_image = "<img src=\"/FBCW_new2/files/uploads/default.jpg\" class=\"left\" alt=\"default image\"/>";

if(!empty($photo)) $filename = $image;

else $filename = $default_image;

echo $filename;

0

Решение

Вы проверяете, $image допустимый путь к файлу, но $image содержит строку HTML; следовательно, file_exists почти всегда вернется false, Вы хотите проверить правильность пути к файлу:

if(file_exists(APP . WEBROOT_DIR . '/' . $news['News']['imgPath'])){
// ...
}

Примечание: в зависимости от того, где вы храните эти изображения (и как вы храните их пути к файлам), вам, вероятно, придется использовать APP константа (и другие) для проверки правильности абсолютного пути к файлу.

Возможно, вы захотите создать помощника, который будет выполнять замену изображения для вас, см. Помощники — CakePHP Cookbook 2.0.

1

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

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

По вопросам рекламы [email protected]