[PHP-users 31480] Smarty、デフォルトでエスケープする方法 (was Re: Re: value属性への変数展開)

goungoun gounx2 @ gmail.com
2007年 2月 17日 (土) 21:48:15 JST


こんにちは。

On Sat, 17 Feb 2007 19:43:14 +0900
菊澤 正明 <kikuzawa @ cyber-coo.com> wrote:
> > Smartyもデフォルトをエスケープにする。
> > ということはできるのかな?
> 
> Smartyの$default_modifiers変数へ修飾子を設定することで、
> 変更することができます。
> 
> 設定の仕方は、
> $Smarty->default_modifiers = array('escape:"html"');
> こんな感じです。

やはりそういうのはあったのですね。
昔探したときには見つけることができなかったので、
不完全燃焼してたのですがスッキリしました。

で、早速googleで検索してみたのですが
・関数のパラメータとして指定した変数にも、$default_modifiers が
  適用されてしまう。
・パラメータが配列の時にも$default_modifiersを適用しようとして
  エラーになる。
とかで使い物にならない。
というような記事も見つけてしまいました。

私自身Smartyのこと詳しくないのに&試してもいないのに
ネットでかじった事を書くのはあまり宜しくないかも知れませんが、
何事も万能な手段はありませんから、そういうハマりどころがあるかも。
という程度で覚えておいて、何か機会があればSmartyも使ってみたい
と思います。

> 
> 余談ですが、この変更で
> Smartyのコンパイル済みのファイル出力が変わりますので、
> 注意してください。
> テンプレートとコンパイル後のファイルのタイムスタンプを
> 見てコンパイルするかどうの決定を行っているようなので、
> force_compileを利用していない場合は、上記変更を行った
> にも関わらず、結果が反映されないことがあります。
> コンパイル済みファイルを消すか、テンプレートのタイムスタンプ
> を更新すれば大丈夫です。
> #これで、はまってしまったので...

Smartyに限りませんが、、、
"キャッシュ" で "あれ???" と
長時間ハマることは私も良くあります(汗

-- 
goungoun <gounx2 @ gmail.com>
http://goungoun.dip.jp/app/



PHP-users メーリングリストの案内