我想做{unset($array['index'])}
一个Smarty 3模板。
是否支持这样的语法(或类似的)?在谷歌搜索和文档阅读之后,我找不到令人满意的东西。
也许我应该向 Smarty 开发团队提出功能请求?:)
无论如何,鉴于当前可用的模板功能,您将如何做到这一点?
不过有一种方法:-)
{$array=$array|array_diff_key:(['index']|array_flip)}
尽管在模板中这样做不是一个好主意,但有时它可能会节省您的时间。
我不认为 smarty 对此有直接的支持。你总是可以用 smarty 的{php}
标签来做这件事,但是我强烈反对你这样做。逻辑不属于演示级模板。
尝试这个
{$array.index = null}
模板引擎背后的主要思想是,您可以在解析视图之前完成所有加载、逻辑、取消设置等。话虽如此,您不应该在模板中取消设置数据,而且我很确定他们不会实现该功能请求。
我也不明白为什么要取消设置 smarty 变量:只是不要使用它,它不会被显示。
两步:
{$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
是一个数组索引。
尝试
{assign var=$array.index value=null)}