Как проверить, существует ли изображение на сервере или нет с помощью Smarty? - PullRequest
3 голосов
/ 13 февраля 2012

я хочу сделать что-то подобное

{if image_exists}

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

{else}

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

{/if}

как мне решить эту проблему?

Ответы [ 3 ]

5 голосов
/ 13 февраля 2012

Вместо того, чтобы Smarty выполнял логику, я бы сказал, что вместо этого лучше использовать настоящий PHP.

В PHP вы можете сделать что-то вроде:

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

Тогдав шаблоне вам не понадобится оператор if.Просто используйте тег img, как обычно.

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

Если вы действительно хотите выполнить проверку в файле шаблона, просто используйте функцию PHP обычно с оператором Smarty if.

{if file_exists($path . $imagename)}

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

{else}

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

{/if}
3 голосов
/ 26 ноября 2012

Функция 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}
0 голосов
/ 12 августа 2012
{if $(image variable whatever u used) ne ""}{$pathtoimagedirectory}/{$imagename}{else}{$path to default image}/{$defaultimagename}{/if}
...