Smartyのmodifierを使う際の注意について。
ちゅーわけで、前回、default_modifiersがいいんだぜ!てな感じで書いたわけだが、配列とかオブジェクトもそのままmodifierを当てはめようとして、エラーが出るじゃん。ダメダメじゃん。
ソースを追いかけてみると、Smarty_Compiler.class.phpで、default_modifiersの値を見ているみたい。で、pluginの中のソースを少しばかり読んでみる。
つか、Smartyいけてねー。
modifier_debug_print_var.php
modifier_strip.php
が第一引数がstringじゃないのね。まぁ、modifier_debug_print_var.phpは、配列やオブジェクトを渡して、その内容を出力するようなmodifierだからいいのだけど、modifier_strip.phpは、なぜかstringなのに、仮変数名がtextってなってる。こんなに普及しているライブラリなのに。。。ちなみにソースを見たのは、最近の2.6.13なんだけども。見てちょっとショック。
で、さーらーに、配列やオブジェクトにmodifierを使うことができるってのは、いいんだけど、escapeとかに書けちゃうんだよね。そして、当然のようにエラーが出るのだが、default_modifiersは、変数がstringだろうが、配列だろうが、オブジェクトだろうが同じように扱うので、配列とか指していると普通に使えない。
超いけてねー。
なんとかテンプレートファイルに出てくる変数をきれいに書きたいので、(そして、ちゃんとエスケープとかよろしくしてくれるように、)ちょいとばかしmodifiersの動作を書き換えちゃった。
まぁ、stringって書いてあるところにstringじゃなかったらそのまま返すっていう風に書き換えたの。とりあえず、これでいいけど、なんかキモいなぁ。他にいい方法ないかなぁ。
Shin Ohno 2003-2012