2012-03-21 27 views
0

私はPHPでスマイリータグを使用していますが、私の質問/問題は!isset機能に関するものです。 まず、2つの配列を作成して割り当てる方法は次のとおりです。次に、SMarty IF文を使用して条件を比較し、条件が満たされた場合はHTMLを表示するか表示しません。SmartyタグPHP isset文

最初の配列はデータベースから作成され、Smarty変数として割り当てられます。

{section name=cart loop=$cart} 
{/section} 

二番目の配列は、データベースから引き出され、私はSmartyのキャプチャを通じて、この配列を代入しています:

{capture name='donate' assign='donate'} 
{/capture} 

配列が割り当てられていたら、ここでのif文は次のとおりです。

{if $cart[cart].Program == TT && !isset($donate)} 
<td>Make a difference. Donate $10.00 to the ASPCA</td> 
{/if} 

$ donate配列が設定されていない場合でも、HTMLは表示されます。私が間違っている可能性があることを指摘するための洞察力を覚えておいてください

+0

$寄付金が設定されていないことは確かですか?チャンスは少なくとも初期化されているので、なぜissetが失敗しているのか、 '空($寄付)'を試すことができます。 –

+0

陽性。配列$寄付でvar_dumpを実行しました。 –

+0

あなたは、あなたが 'var_dump($ donate)'して$ donateがまだ初期化されていないなら、未定義の変数についてのPHP通知を受け取ると、あなたはissetを混乱させるかもしれないと思います。あなたがこのエラーを受け取っていないという事実は、それが実際にはデータなしで初期化されていると信じるようになります。 '空($寄付)'を試してください。 –

答えて

0
{capture name='donate' assign='donate'} 
{/capture} 
{$donate|var_dump} 

だけisset(null) === falseので、あなたに

string(0) "" 

を与える、あなたが好みなら、

{if $cart[cart].Program == TT && $donate} 

または!empty($donate)にあなたの表現を変更することもできます。

0

$donate配列が設定されていないか空の配列であり、empty($donate)を試しましたか?

+0

はい、空の($寄付)機能も試しました。 –