Smartyテンプレート内でissetやemptyが使えない場合

このエントリーをはてなブックマークに追加
はてなブックマーク - Smartyテンプレート内でissetやemptyが使えない場合
Share on Facebook

テンプレート内のif文で「isset()」や「empty()」などのPHP関数を使いたかったのですが、エラーになってしまいました。

どうやら、テンプレートのどこかで $default_modifiers を設定すると、使えなくなってしまうようです。 私の場合はEC CUBE改造中にこの問題にぶつかりました。grepしてみたら、/data/class/SC_View.php あたりで設定してしまっている模様。

対策としては、「{if isset($var|smarty:nodefaults)}」のように修飾子を追加して、default_modifiersを無効にすると良いようです。

修飾子のルールが未だによくわかっていないので、なぜこれを追加すると動くのかも理解していません。 (この仕様はあまりSmartとは思えないです)

参考

Smartyでdefault_modifiers指定時に{debug}を使う方法 | twk @ ふらっと

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>