0

私のシナリオ:

<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Email</th>
        </tr>
    </thead>
    <tbody>
        {foreach from=$users item=user}
            <tr>
                <td>{$user.name}</td>
                <td>{$user.email}</td>
            </tr>
        {foreachelse}
            There are no users....
        {/foreach}
    </tbody>
</table>

ユーザーがいない場合、醜いテーブルがあるので、次を追加します。

{if $users|count > 0}
    <table>
        <thead>
            <tr>
                <th>Name</th>
                <th>Email</th>
            </tr>
        </thead>
        <tbody>
            {foreach from=$users item=user}
                <tr>
                    <td>{$user.name}</td>
                    <td>{$user.email}</td>
                </tr>
            {foreachelse}
                There are no users....
            {/foreach}
        </tbody>
    </table>
{else}
    There are no users....
{/if}

しかし今、私の{foreachelse}は役に立たない。

だから私はその部分を削除し、それは役に立たない{foreachelse} There are no users....と結論付けます.{foreachelse}

この問題は 、 などで発生して<table>います<ol><ul>

誰かが解決策を持っているので、私は使用できます{foreachelse}か?

ありがとう!

4

2 に答える 2

2

ユーザーがいないことを示す行を 1 つ持つことができます。たとえば、次のようになります。

<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Email</th>
        </tr>
    </thead>
    <tbody>
        {foreach from=$users item=user}
            <tr>
                <td>{$user.name}</td>
                <td>{$user.email}</td>
            </tr>
        {foreachelse}
            <tr>
                <td colspan="2">There are no users....</td>
            </tr>
        {/foreach}
    </tbody>
</table>

しかし、これが望ましい結果でない場合は理解できます。

テーブルやリストの内容の代わりに foreach で div を使用することがあります。これに関する smarty のドキュメントを確認してください: http://www.smarty.net/docs/en/language.function.foreach.tpl

于 2012-10-19T10:00:38.013 に答える
1

{foreachelse}変数に値がない場合に実行されfromます。それは私にとって非常に便利で、if-else条件は必要ありません。あなたのコードを使用すると、次の{foreachelse}ようになります。

{foreachelse}
     <tr><td colspan="2" style="color:red">There are no users....</td></tr>
{/foreach}
于 2012-10-19T10:03:36.747 に答える