smartyはあんまり使用してなかったのですが、最近本格的に使い始めました。
それで今日困ったことをメモ。
smartyを使っていて、表示項目を簡単にエスケープしたかった。
そしたらdefalut_modeifiresってのを発見。
こいつを指定してやればhtmlを全ての変数に指定したエスケープを行ってくれるらしい。
こりゃ便利だなと思って、とりあえず下のようにhtmlを指定した。
$smarty->defalut_modeifires = array('escape:"html"');
結果、今まで正常に動いてた画面にエラーが。
どうもこいつを指定してやると、{foreach}とかで使用している、配列もエスケープしてるようだ。
とりあえず、エスケープは下のように1つ1つやるしかないのかな。
{$変数名|escape[:"html"]}
で、困ったのがここからでdefalut_modeifiresを指定した部分を消してもエラーが消えなくなった。
原因はキャッシュだった。
smartyは意識しなくてもキャッシュを残して速度を上げてくれるそうで。
エラー時のキャッシュが残ったままだったのが原因だったみたい。
キャッシュを消したら、元通り動くようになった。
便利な機能だけど、意識してないとまた起きてもおかしくなさそうだなぁ。
覚えておかないと。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。