GANCHIKU.com

Smartyのmodifierを使う際の注意について。

2006年3月13日
PHP

ちゅーわけで、前回、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じゃなかったらそのまま返すっていう風に書き換えたの。とりあえず、これでいいけど、なんかキモいなぁ。他にいい方法ないかなぁ。

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Shin Ohno 2003-2012