怎麼在 smarty 模板中 判断注册函数获取的值为空

#1 sky8652

公用部份(注册了一个全局函数)
function get_meat($params){
        $id = $params["id"];
        $key = $params["key"];       
        $conditions = array( 'user_id' => $id,'img_name' => $key );      
        $result = spDB('user_img')->find($conditions);
        echo $result['img_path'];

}
spAddViewFunction('get_post_meta','get_meat');

模板部份(调用)
<{get_post_meta id="<{$results.user_id}>" key="img_n"}>
我想做个 判断   是否为空  <{if}> echo---<{else}> echo ---<{/if}> 突然间卡住了 不知道怎么做,






2012-05-10 17:37:53

#2 anythink

<{if $results.user_id == ''}>
<{get_post_meta id="<{$results.user_id}>" key="img_n"}><{get_post_meta id="<{$results.user_id}>" key="img_n"}>
<{else}>

<{/if}>

2012-05-10 18:32:59

#3 jake

因为smarty的注册函数的返回值是用于显示的,所以我们如果要获取另一个的返回值,就需要用smarty的引用对象来进行赋值,然后在函数外再用这个值。

1. 你的函数,加个$smarty参数:
function get_meat($params, $smarty){

2. 函数体里面:

function get_meat($params, $smarty){
$result = spDB('user_img')->find($conditions);
$smarty->assgin('function_result_id', $result);
}

3. 在模板里面
<{get_post_meta key="img_n"}>
调用了函数以后,就等于给smarty加了个变量叫function_result_id的,所以
<{if $function_result_id != false}>
有值的情况
<{else}>
无值的情况
<{/if}>

2012-05-10 19:20:41

#4 sky8652

Hi...jake
我按照你的思維做

function get_meat($params,$smarty){
        $id = $params["id"];
        $key = $params["key"];       
    $conditions = array( 'user_id' => $id,'img_name' => $key );      
    $result = spDB('user_img')->find($conditions);       
    $smarty->assgin('function_result_id', $result['img_path']);       

}
spAddViewFunction('get_post_meta','get_meat');

模板
<{if $function_result_id != false}>
有值的情况
<{else}>
无值的情况
<{/if}>


出現以下情況,Smarty Error: Call of unknown function 'assgin'

2012-05-11 09:54:16

#5 jake

哦搞错了单词,是assign,不是assgin。

http://www.smarty.net/docs/en/plugins.functions.tpl

2012-05-11 12:58:35

#6 sky8652

jake 发表于 2012-5-11 12:58
哦搞错了单词,是assign,不是assgin。

http://www.smarty.net/docs/en/plugins.functions.tpl ...
Thanks !jake
我也找到原来是单词写错
呵呵,,,,花了不少时间{:soso_e100:}

2012-05-11 13:20:53