• ベストアンサー

【Smarty】foreach関数やsection関数のループを途中で終了させることはできますか?

Smarty初心者です。 環境は、 Smarty2.6.18 PHP5 レンタルサーバー です。 foreach関数やsection関数のループを途中で終了させたい場合どうすればいいのでしょうか? PHPの break; 相当の関数はないのでしょうか。 そんなものはない!という回答でも結構です。 お詳しい方、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

よく考えてみてください。 なぜ途中で止める必要があるのでしょうか? なにかしらの条件があり、そこでループをとめて表示したい ということですよね? であれば、Smartyにアサインする前にPHP側で条件に応じて条件に一致した後の配列を消すなりすれば良いだけでは? そうすれば、Smarty側はなにも手をつけずにすみます。 Smartyは多機能すぎて本来の目的以外の事もできてしまいますが、あくまでもテンプレートエンジンです。 ロジックとなる部分を記述すべきではありません。 見た目を変更するときはSmartyで。条件が変わったりしたときはPHP側のソースで対応する というきっちりと線引きしないと、なんのためにSmartyを使ってテンプレートとロジック(PHP側)を分離しているのか意味が薄くなります。 ちなみに、 Smartyではsectionは古くからあり、互換性を保つためにのみ今現在も存在しています。 foreachを推奨します。

ikataro
質問者

お礼

なるほど。 SmartyではできないがPHP側でできるはずなのでそれで対応せよということですね。 Smartyのことばかり考えて本質を見失うところでした。 ありがとうございました。

関連するQ&A