如果cakePHP中没有显示默认图像

时间:2015-01-13 21:16:13

标签: php image cakephp file-exists

我正在尝试在cakePHP中显示默认图像,当存储在DB中的图像的文件路径条目为空时。我在下面的代码中发现的是,如果数据库条目为空,则显示默认图像,但如果数据库中有条目,也会显示该图像。

因此,出于某种原因,如果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;
  ?>

解决: 由于$ 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;

1 个答案:

答案 0 :(得分:1)

您正在检查$image是否是有效的文件路径,但$image包含HTML字符串;因此,file_exists几乎总会返回false。您想检查文件路径是否有效:

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

注意:根据您存储这些图像的位置(以及存储文件路径的方式),您可能需要使用APP常量(和其他)来检查正确的绝对文件路径。

您可能想要创建一个帮助您为此进行图片替换的帮助,请参阅Helpers - CakePHP Cookbook 2.0