如何使用smarty检查服务器上是否存在图像?

时间:2012-02-13 07:03:15

标签: php smarty

我想做这样的事情

{if image_exists}

<img src='{$path}{$imagename}'>

{else}

<img src='{$path}default.jpg'>

{/if}

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:5)

不是让Smarty做逻辑,而是让实际的PHP代替它做更好。

在PHP中,您可以执行以下操作:

if (file_exists($filename)) 
{
    $path = $filename;
} 
else 
{
    $path = 'default.jpg';
}

然后在模板中,您不需要任何if语句。只需像往常一样使用img标记。

<img src="{$path}" />

如果你真的想在模板文件中进行检查,只需使用Smarty的if语句正常使用PHP函数。

{if file_exists($path . $imagename)}

<img src='{$path}{$imagename}'>

{else}

<img src='{$path}default.jpg'>

{/if}

答案 1 :(得分:3)

Smarty file_exists函数只接受绝对路径。

所以你可以这样做:

{assign var="specialmsg" value="/var/www/html/public/uploads/{$logo}"}
{if file_exists({$specialmsg})}
\\SOME CODE HERE
{else}
\\ELSE CODE HERE
{/if}

答案 2 :(得分:0)

{if $(image variable whatever u used) ne ""}{$pathtoimagedirectory}/{$imagename}{else}{$path to default image}/{$defaultimagename}{/if}