我想{unset($array['index'])}
进入Smarty 3模板。
是否支持这样的语法(或类似)?谷歌搜索和文档阅读后,我找不到令人满意的东西。
也许我应该向Smarty开发团队索要功能请求? :)
无论如何,鉴于目前可用的模板功能,您将如何做到这一点?
答案 0 :(得分:5)
我不认为聪明的人会直接支持这一点。你总是可以用smarty的{php}
标签来做这件事,但是我强烈反对你这样做。逻辑不属于演示级别模板。
答案 1 :(得分:3)
有一种方法: - )
{$array=$array|array_diff_key:(['index']|array_flip)}
即使在模板中执行此操作也不是一个好主意,有时可能会节省您的时间。
答案 2 :(得分:2)
试试这个
{$array.index = null}
答案 3 :(得分:1)
模板引擎背后的主要思想是,在解析视图之前,您可以执行所有加载,逻辑,取消设置等操作。话虽如此,您不应该在模板中取消设置数据,我很确定他们不会实现该功能请求。
我也不明白你为什么要取消设置一个聪明的变量:只是不要使用它,它就不会显示出来。
答案 4 :(得分:0)
我认为,您不应该这样,因为所有逻辑必须在代码中而不是在模板中。
但是你可以编写自己的修饰符http://www.smarty.net/docs/en/plugins.modifiers.tpl
答案 5 :(得分:0)
你不是要覆盖这个值吗?
{assign var="array" value=array()}
{$array['index']='1'}
{$array['index2']='2'}
{$array['index']=''}
{$array|print_r}
这对我来说很聪明< 3,不知道是否仍然有效,因为他们真的搞砸了。
答案 6 :(得分:0)
试
{assign var = $ array.index value = null)}
答案 7 :(得分:0)
两个步骤:
{$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}
答案 8 :(得分:0)
{$array=$links.lists|array_diff_key:(['10']|array_flip)}
{$array|print_r}
这里10
是一个数组索引。