Smarty3へのアップデートの注意点

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)!

コメント

タイトルとURLをコピーしました