1

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」とだけ表示されていることがわかります。

それがより理にかなっていることを願っています!

よろしく

アンディ

4

1 に答える 1

0

次のようなことを試してください:

{foreach name = "loop" from=$setall item="item" key="key"}
    {if is_array($item)}
        {foreach name = "inner_loop" from=$item item="inner_item" key="inner_key"}
            Inner item:{$inner_item}
        {/foreach}    
    {else}
            Outer item:{$item}
    {/if}
{/foreach}
于 2012-04-23T08:06:20.670 に答える