PEAK XOOPS - D3モジュール・Smartyアサイン(2) in englishin japanese

Archive | RSS |
XOOPS
XOOPS : D3モジュール・Smartyアサイン(2)
Poster : GIJOE on 2006-10-12 18:20:13 (7434 reads)

in englishin japanese
MySQLには、配列というフィールドタイプは存在しません。
そこで、フィールドとしてはtextを用意し、serialize()してから格納、unserialize()して取り出す、という手法がLAMPアプリケーションでは一般的に利用されています。

ただ、その配列をSmartyにどうアサインするかは問題です。

原則的に生値アサインであるCube2.1方式なら問題は簡単です。あくまで、テンプレートサイドでエスケープ処理を行うからです。

しかし「アサインされるデータは安全である」ことを保証するシステムでは大変です。配列を一通りほどいて、それぞれにエスケープ処理を施してからようやくアサインできるのです。複雑な配列であれば、処理速度への悪影響だけでなく、余計なバグもはらんでしまいそうです。

かといって、DB格納前にHTMLエスケープを行うのは、明らかに間違いでしょう。

こういうケースでは、「美しくない」と言われるのを承知で、生値アサインを行う方がむしろベターな結果が得られそうです。テンプレートサイドが生値かどうかを知る手段は、例によって変数名です。

とりあえず、D3モジュールでは、生値アサインしたデータには、最後に _raw がつきます。このデータが配列であれば、<{foreach}>などで展開した文字列に|escapeをつけるんだな、と理解していただければ幸いです。

0 comments

Printer friendly page Send this story to a friend

Comments list

Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!