如果未设置会话变量,则为Smarty错误

时间:2015-11-03 09:22:49

标签: php session smarty

我正在改造我们网站上的优惠券系统,现在遇到了以下问题:

我正在检查会话中的cc_id(couponcode_id),如果是,我将该变量提供给PHP文件,其中包含了一些函数。只举一个例子:

{if $smarty.session.cc_id}
    <div class="coupon-outter">
        <div class="coupon">
            <div class="coupon-code-start">
                <p>Ihr Coupon ist aktiv.<br>
                Klicken Sie hier für Details</p>
            </div>
        <div class="coupon-code-detail">
           <div class="coupon-block-headline">
              <p class="coupon-headline">{$smarty.session.cc_id|@get_coupon_code}</p>
           </div>   
        </div>
        </div>
    </div>  
{/if}

所以在我的理解中,如果会话变量{$smarty.session.cc_id}被设置,整个事情就会发生。现在,如果我兑换优惠券并且会话变量可用,那么一切正常。但是当没有设置会话变量时,我得到以下错误代码:

USER ERROR(256): "Smarty error: [in C:/xampp/htdocs/xxx/xxx/xxx/index.html line 72]: [plugin] modifier 'get_coupon_code' is not implemented (core.load_plugins.php, line 118)"

所以我知道如果未设置,Smarty无法通过会话cc_id。但如果没有设置它甚至不应该整个代码块,但它正在尝试然后我得到错误,因为它无法传递cc_id。

这是我的PHP:

function get_coupon_code($ccid){
    $sql = "SELECT coupon_code FROM coupons WHERE coupon_id='".$ccid."'";
    $retval = mysql_query($sql);
    $row = mysql_fetch_assoc($retval);

    return $row['coupon_code'];
}

有任何解决此问题的建议吗?

1 个答案:

答案 0 :(得分:0)

{if isset($ smarty.session.cc_id)}可以解决问题。