PHP
Smarty

テンプレートエンジンSimplate loop属性の設定の仕方

More than 3 years have passed since last update.

あるサイトの改修を行っていて、テンプレートエンジンのSimplateを触っています。
ループ文のループの回数を指定がなかなかできず、エラーに対処するのに少し苦労しました。

Simplateでループ文

配列をループするためには<{section}>タグを使用します。
ループの回数を指定するにはloop属性(たいていは配列)を使用します。

エラーが起きるコードと正常なコード

一見同じように見えるコードですが、何が違うか分かりますか?
(タイトルから予想付いているかもしれませんが)

エラーが起きるコード

下が問題のコードです。

<{section name=i loop=range(0, 10)}>
  <P><{$array[i]}><p>
<{/section}>

正常なコード

問題なく動くコードです。

<{section name=i loop=range(0,10)}>
  <P><{$array[i]}><p>
<{/section}>

まとめ

上の答えは、range関数のパラメータ間に空白があるかどうかです。
なぜ、関数のパラメータ間に空白があると動作しないかはわかっていませんが、
for文で回数を指定したい場合には、パラメータ間の空白に注意してください。

参考