2015-11-03 67 views
0

我返工我們網站上的優惠券系統,現在得到了以下的問題:Smarty的錯誤,如果會話變量沒有設置

我檢查會話的cc_id(couponcode_id),如果我isset給變量一個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} 

所以在我的理解中,整個事情只發生IF會話變量{$smarty.session.cc_id} isset。現在,如果我兌換優惠券和會話變量可用,它一切正常。但是,當會話變量沒有設置我收到以下錯誤代碼:

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']; 
} 

解決這個有什麼建議?

+0

你爲什麼要抑制'get_coupon_code'中的錯誤? - 處理它們比忽略它們更好 – Epodax

+0

我不是故意壓制它們的。我只是不知道如何解決這個問題。對我來說,爲什麼它不起作用沒有意義。 –

+0

只是爲了好奇心,如果您寫出了什麼輸出,即initest {$ smarty.session.cc_id} endtest或{$ smarty.session.cc_id | var_dump} – Borgtex

回答

0

{ifset($ smarty.session.cc_id)}可以解決問題。

+0

我已經試過這個,它不工作 –

+0

http://stackoverflow.com/questions/8657551/how-to-call-a-php-function-inside-a-smarty-tpl-file – Kishore