2012-02-13 90 views

回答

5

與其讓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} 
+0

但我在TPL文件中使用smartyloop,這就是爲什麼我需要智者檢查 – 2012-02-13 07:17:15

+0

那麼你可以簡單地在PHP循環,做檢查過,可以你呢?另外,如果您真的想在模板文件中進行檢查,則可以執行相同的操作。我已經更新了我的答案。 – 2012-02-13 07:22:15

+0

{if file_exists($ imagename)}不工作! :( – 2012-02-13 08:36:31

0
{if $(image variable whatever u used) ne ""}{$pathtoimagedirectory}/{$imagename}{else}{$path to default image}/{$defaultimagename}{/if} 
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} 
相關問題