2015-01-13 1 views
0

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

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

Пол

<?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; 
    ?> 

Разрешение: С $ изображения HTML-строки, я добавил переменную сначала проверить, если путь к файлу был пуст, а затем установить $ имя_файла им.

 $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; 

ответ

1

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

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

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

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

+0

Спасибо Джейкоб, я изменил код на следующее, но теперь изображение по умолчанию не отображается. $ image = $ this-> Html-> image ( $ news ['News'] ['imgPath'], array ('title' => $ news ['News'] ['alt_tag'], 'class' => 'left'), массив ('escape' => false)); $ default_image = "\"default"; if (file_exists (APP. WEBROOT_DIR. '/'. $ News ['News'] ['imgPath'])) $ filename = $ image; else $ filename = $ default_image; echo $ filename; – Paul

+0

@Paul Что отображается вместо изображения по умолчанию? Вы проверили источник HTML? Вы можете добавить скобки вокруг условных обозначений? –

+0

для записей, где нет пути к файлу в db, то, что отображается в исходном представлении, является: . Следует ли форматировать $ default_image по-разному? – Paul