Smarty 配列があり、配列内の要素の一部も配列です。私はここで他の誰かのコードを扱っており、出力内に余分なビットを挿入する必要があるため、配列をループして結果を出力することはできません。
私が取り組んでいるコードは次のとおりです。
{foreach from=$setall item=item}
{if $item.req_type != 6}
{if $item.attr_value}
<div class="detailed_line" >
<p>
<label>{$item.name}</label>
{$item.attr_value|JView:$item.attr_id:$data->id:$item.type:$item.req_type}
</p>
</div>
{/if}
{/if}
{/foreach}
したがって、次を使用して個々の値を取得できます。
{$setall.5.attr_value}
しかし、値の1つが別の配列である場合、それをループして値を出力する方法がわかりません。
これは Smarty テンプレートへの私の最初の進出なので、どこから始めればよいかさえわかりません。
どんなアイデアでも大歓迎です!
よろしくお願いします
アンディ・ジェイコブス
編集:以下のペリクリスの回答への返信:
ありがとうございます。これに微妙な変更を加えて試しました:
{foreach name = "loop" from=$setall.0 item="item" key="key"}
{if is_array($item)}
{foreach name = "inner_loop" from=$item item="inner_item" key="inner_key"}
Inner item:{$inner_item}<br />
{/foreach}
{else}
Outer item:{$item}<br />
{/if}
{/foreach}<br />
したがって、まず、メイン配列の最初の位置に配列を出力しようとしています。これは私が得るものです:
http://j412.workinprogress.co.uk/component/jomdirectory/23-Friendship-Travel
デフォルトの出力である上部のデータを見ることができます。私がする必要があるのは、setall 配列の値の一部を表示し、次に説明、そして setall の残りの部分を表示することです。
たとえば、Destinations を見ると、このレコードの 4 番目の要素は「British Isles Europe」を出力するはずですが、「array」とだけ表示されていることがわかります。
それがより理にかなっていることを願っています!
よろしく
アンディ