Smarty2からSmarty3にバージョンアップ中に発生した問題をメモしておきます。
1.includeできない
Smarty3になって、大分記述の曖昧さに対して厳しくなったのか、ファイルのインクルード時に
{ include file=’test.html’}
こんな書き方をしているとincludeしてくれません。
{include file=’test.html’}
先頭の「{」との間にスペースがあるだけで認識してくれなくなります。
{include file=$tmp_test.html}
この書き方も以前はOKだったんですが、Smarty3以降変数を使用する場合は
{include file=”$tmp_test.html”}
こんな感じにダブルクォートで囲んでやらないとエラーになります。
2.{php}タグが使えない。
{php} で囲まれた範囲内でPHPが使えたんですが、これも使えなくなってます。
「デフォルトで無効」ってなってるんですが、
$smarty->allow_php_tag=true;
こいつを追加してやっても「そんな関数ねぇよ」と怒られるばかり。
素直に事前に計算なりして、assignしておきましょう。
3.phpの関数を使うときの注意
{$a+$b+$c|number_format}
こんな書き方をしてる場合も、Smarty3からはちゃんと処理をしてくれません。
直前の$cがnumber_formatの対象となり、結果に狂いが生じます。
正しくは、
{($a+$b+$c)|number_format}
かな。(ちなみにこの記述だとSmarty2では逆にエラーになります)
3.register_prefilterがなくなってる
register_prefilterがなくなっているので、これからは
registerFilter を使って下さいって事みたいです。
以上、とりあえずSmarty2から3への移行時に発生した問題をまとめてみました。
え?バージョンアップ遅くねぇか?って?
だって修正大変なんだもん(ここではSmarty使ってませんw)!
コメント