- ベストアンサー
【Smarty】foreach関数やsection関数のループを途中で終了させることはできますか?
Smarty初心者です。 環境は、 Smarty2.6.18 PHP5 レンタルサーバー です。 foreach関数やsection関数のループを途中で終了させたい場合どうすればいいのでしょうか? PHPの break; 相当の関数はないのでしょうか。 そんなものはない!という回答でも結構です。 お詳しい方、よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
よく考えてみてください。 なぜ途中で止める必要があるのでしょうか? なにかしらの条件があり、そこでループをとめて表示したい ということですよね? であれば、Smartyにアサインする前にPHP側で条件に応じて条件に一致した後の配列を消すなりすれば良いだけでは? そうすれば、Smarty側はなにも手をつけずにすみます。 Smartyは多機能すぎて本来の目的以外の事もできてしまいますが、あくまでもテンプレートエンジンです。 ロジックとなる部分を記述すべきではありません。 見た目を変更するときはSmartyで。条件が変わったりしたときはPHP側のソースで対応する というきっちりと線引きしないと、なんのためにSmartyを使ってテンプレートとロジック(PHP側)を分離しているのか意味が薄くなります。 ちなみに、 Smartyではsectionは古くからあり、互換性を保つためにのみ今現在も存在しています。 foreachを推奨します。
お礼
なるほど。 SmartyではできないがPHP側でできるはずなのでそれで対応せよということですね。 Smartyのことばかり考えて本質を見失うところでした。 ありがとうございました。