【问题标题】:how to check if image exists on server or not using smarty?如何检查服务器上是否存在图像或不使用 smarty?
【发布时间】:2012-02-13 07:03:15
【问题描述】:

我想做这样的事情

{if image_exists}

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

{else}

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

{/if}

我该如何解决这个问题?

【问题讨论】:

    标签: php smarty


    【解决方案1】:

    与其让 Smarty 做逻辑,不如让实际的 PHP 来做。

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

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

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

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

    如果你真的想在模板文件中做check,只要正常使用PHP函数,配合Smarty的if语句即可。

    {if file_exists($path . $imagename)}
    
    <img src='{$path}{$imagename}'>
    
    {else}
    
    <img src='{$path}default.jpg'>
    
    {/if}
    

    【讨论】:

    • 但我在 tpl 文件中使用 smartyloop,这就是为什么我需要 smarty 来检查
    • 您可以简单地在 PHP 中使用循环并进行检查,不是吗?此外,如果您真的想在模板文件中进行检查,您可以做同样的事情。我已经更新了我的答案。
    • 它在我的机器上运行良好。我刚刚测试过了。您使用的是哪个 Smarty 版本?另外,您是否在使用某种框架?
    【解决方案2】:

    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}
    

    【讨论】:

      【解决方案3】:
      {if $(image variable whatever u used) ne ""}{$pathtoimagedirectory}/{$imagename}{else}{$path to default image}/{$defaultimagename}{/if}
      

      【讨论】:

        猜你喜欢
        • 2013-08-05
        • 2013-09-21
        • 1970-01-01
        • 2014-06-27
        • 1970-01-01
        • 2012-03-01
        • 1970-01-01
        • 2010-11-08
        • 2013-04-30
        相关资源
        最近更新 更多