4

{unset($array['index'])}Smarty3テンプレートを作成したいと思います。

そのような構文(または同様の)はサポートされていますか?グーグルとドキュメントを読んだ後、私は満足のいくものを見つけることができません。

たぶん私はSmarty開発チームに機能リクエストを要求する必要がありますか?:)

とにかく、現在利用可能なテンプレート関数を考えて、これをどのように行いますか?

4

9 に答える 9

5

スマートにこれを直接サポートすることはないと思います。これはsmartyのタグを使用していつでも実行できますが{php}、そうすることは強くお勧めしません。ロジックは、プレゼンテーションレベルのテンプレートには属していません。

于 2011-09-19T08:48:38.950 に答える
5

方法はありますが:-)

{$array=$array|array_diff_key:(['index']|array_flip)}

テンプレートでそれを行うのは良い考えではありませんが、時にはそれはあなたの時間を節約するかもしれません。

于 2013-07-26T15:41:08.010 に答える
2

これを試して

{$array.index = null}
于 2012-02-27T13:42:55.387 に答える
1

テンプレートエンジンの背後にある主な考え方は、ビューを解析する前に、すべてのロード、ロジック、設定解除などを実行できるということです。そうは言っても、テンプレートのデータの設定を解除するべきではなく、その機能要求を実装しないと確信しています。

また、smarty変数の設定を解除したい理由もわかりません。使用しないでください。表示されません。

于 2011-09-19T08:46:03.813 に答える
1

2つのステップ:

{$array.index = null}
{$array = $array|array_filter}

Smarty3で動作します。

動的インデックスの例:

{foreach $array as $item}
    {if $item.foo == 'bar'}
        <h1>{$item.text nofilter}</h1>
        {* unset item from array *}
        {$array[$item@key] = null}
        {$array = $array|array_filter}
        {break}
    {/if}
{/foreach}

{if $array}
    <ul>
    {foreach $array as $item}
        <li>{$item.text nofilter}</li>
    {/foreach}
    </ul>
{/if}
于 2020-01-28T07:53:48.210 に答える
0

すべてのロジックはテンプレートではなくコードに含まれている必要があるため、これは望ましくないと思います。

ただし、独自の修飾子を作成することはできますhttp://www.smarty.net/docs/en/plugins.modifiers.tpl

于 2011-09-19T08:44:55.020 に答える
0

値を上書きしませんか?

{assign var="array" value=array()}
{$array['index']='1'}
{$array['index2']='2'}
{$array['index']=''}
{$array|print_r}

これはsmarty<3で私のために働きました、彼らが本当にsmartyを台無しにしたので、まだうまくいくかどうかわかりません。

于 2011-09-19T08:59:23.270 に答える
0
{$array=$links.lists|array_diff_key:(['10']|array_flip)}
{$array|print_r}

これ10が配列インデックスです。

于 2020-09-24T09:47:36.300 に答える
-1

試す

{var = $ array.index value = nullを割り当てます)}

于 2012-11-18T15:20:18.770 に答える