PHPTALでQuoteを出力する
- Date
- 2006-08-10 (Thu)
- Category
- php
PHPTAL を調べています。もうすぐ公開できると思う project でも使っています。PHPTAL だと、しっかり組んだ (X)HTML をテンプレート化するのがスゴく楽。コード書かない人でも、logic が理解できる人ならつかえると思う。Symfony でも一時期 View の所で使われたみたいだし、啓蒙する人が居れば結構流行りそうだけどな〜。っていうか、GUI 被せればいいのかも。次の project でやってみようかしらん。
さて。今回はちょっと tricky ではあるんですが、javascript の文 (statement)、つまり <script> 〜〜 </script> の波線の部分を PHPTAL で出力したろ、というのが今回の課題です。普通に文を出すのはいくらでも方法があるのですが、javascript で string を表現したい時はどうしても quote を使わないといけません(多分)。
でも、PHPTAL は HTML 要素の attribute を制御構造に使うという性質上、single quote (') と double quote(") は特別な意味を持っていて、普通に出力すると実体参照(entity reference、例えば "e;みたいなやつ)に変換されてしまいます。無理に出そうとすると Error を吐きます(当たり前)。困った所で Forum を検索して解決法を発見。
<title tal:content="structure title" />
"structure" keyword tells PHPTAL that you've done all the escaping you want to do on the value. Nothing will be escaped, including <.
というわけで正解は structure というキーワードをつけると良い、でした。そしてコードは以下のようになります。ちょと長いがまぁ、tricky なことしてるので。PHPTAL 自体のせいではありませぬ。というか、むしろこういうのは別に、例えば JSON を挿入するとかでやった方が良いのかも。
<span tal:define='global dquote string:"' />
<span tal:define="global comma string:," />
var array = new Array(
<span tal:repeat="each obj/array" tal:omit-tag="">
<span tal:content="structure dquote" tal:omit-tag="" />
<span tal:content="each/path" tal:omit-tag="" />
<span tal:content="structure dquote" tal:omit-tag="" />
<span tal:condition="not: repeat/each/end" tal:content="structure comma" tal:omit-tag="" />
</span>
);
</script>
(以下のコードは、PHPTAL がエラーを出します。っていうか当たり前ですが。。)
<span tal:content='"'/>
Comment:0
Trackback:0
- TrackBack URL for this entry
- http://blogs.grf-design.com/mt/mt-tb.cgi/183
- Listed below are links to weblogs that reference
- PHPTALでQuoteを出力する from The Croton