2012-02-22 8 views
0

でエラー:Smartyの - 私はこのように割り当てる使用アサイン

$smarty->assign("akakak", $_POST[do]); 

それはいくつかのケースでの作業だが、私は、このパラメータに

$smarty->assign("akakak", $_POST[do], true); 
を追加するとき、それはいくつかのケースで

が動作していません

いつも仕事です

なぜですか?

+0

割り当てる前に 'if isset($ _ POST ['do'])'をチェックしていますか? 'do'の前後に引用符を置く。なぜならPHPが定数を文字列の配列キーとして解釈することになるからだ。 –

+0

はい私はそれをチェックします –

+0

あなたの友人はあなたの友人です...あなたは '$ _POST ['do']' not '$ _POST [do]' –

答えて

2

あなたはデフォルト値をチェックまたは設定する必要があります($ _GET、$ _POST、$ _REQUEST、$ _SESSION、$ _COOKIE、$ _SERVER、$ _ENV)スーパーグローバルの値を割り当てる

<?php 
//Check it or set default for $do 
$do=(isset($_POST['do']))?$_POST['do']:''; 

//Assign the $smarty var with $do 
$smarty->assign("akakak", $do); 
?> 
2

は冗長です。テンプレート内の{$smarty}変数(ケース{$smarty.post.do})でこれらのいずれかにアクセスできます。

以下はSmarty3についても同様である。

assign()と3番目の引数がNOCACHEフラグです。詳細については、cacheability of variablesを参照してください。これで実際に問題が解決された場合、実際の問題はキャッシングにあります。 $smarty->caching = true;が設定されている可能性があります。この場合、テンプレートはすべての呼び出しでレンダリングされませんが、可能であればキャッシュから読み取られます。

さらに支援が必要な場合は、失敗したケースについて詳しく説明してください。

それはさておき、$_POST[do]オーバー$_POST['do']を示唆して他のコメントをよく見とisset()またはempty()該当の使用を持っていてください。

関連する問題