{unset($array['index'])}
Smarty3テンプレートを作成したいと思います。
そのような構文(または同様の)はサポートされていますか?グーグルとドキュメントを読んだ後、私は満足のいくものを見つけることができません。
たぶん私はSmarty開発チームに機能リクエストを要求する必要がありますか?:)
とにかく、現在利用可能なテンプレート関数を考えて、これをどのように行いますか?
スマートにこれを直接サポートすることはないと思います。これはsmartyのタグを使用していつでも実行できますが{php}
、そうすることは強くお勧めしません。ロジックは、プレゼンテーションレベルのテンプレートには属していません。
方法はありますが:-)
{$array=$array|array_diff_key:(['index']|array_flip)}
テンプレートでそれを行うのは良い考えではありませんが、時にはそれはあなたの時間を節約するかもしれません。
これを試して
{$array.index = null}
テンプレートエンジンの背後にある主な考え方は、ビューを解析する前に、すべてのロード、ロジック、設定解除などを実行できるということです。そうは言っても、テンプレートのデータの設定を解除するべきではなく、その機能要求を実装しないと確信しています。
また、smarty変数の設定を解除したい理由もわかりません。使用しないでください。表示されません。
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}
すべてのロジックはテンプレートではなくコードに含まれている必要があるため、これは望ましくないと思います。
ただし、独自の修飾子を作成することはできますhttp://www.smarty.net/docs/en/plugins.modifiers.tpl
値を上書きしませんか?
{assign var="array" value=array()}
{$array['index']='1'}
{$array['index2']='2'}
{$array['index']=''}
{$array|print_r}
これはsmarty<3で私のために働きました、彼らが本当にsmartyを台無しにしたので、まだうまくいくかどうかわかりません。
{$array=$links.lists|array_diff_key:(['10']|array_flip)}
{$array|print_r}
これ10
が配列インデックスです。
試す
{var = $ array.index value = nullを割り当てます)}