4

我想做{unset($array['index'])}一个Smarty 3模板。

是否支持这样的语法(或类似的)?在谷歌搜索和文档阅读之后,我找不到令人满意的东西。

也许我应该向 Smarty 开发团队提出功能请求?:)

无论如何,鉴于当前可用的模板功能,您将如何做到这一点?

4

9 回答 9

5

不过有一种方法:-)

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

尽管在模板中这样做不是一个好主意,但有时它可能会节省您的时间。

于 2013-07-26T15:41:08.010 回答
5

我不认为 smarty 对此有直接的支持。你总是可以用 smarty 的{php}标签来做这件事,但是我强烈反对你这样做。逻辑不属于演示级模板。

于 2011-09-19T08:48:38.950 回答
2

尝试这个

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

模板引擎背后的主要思想是,您可以在解析视图之前完成所有加载、逻辑、取消设置等。话虽如此,您不应该在模板中取消设置数据,而且我很确定他们不会实现该功能请求。

我也不明白为什么要取消设置 smarty 变量:只是不要使用它,它不会被显示。

于 2011-09-19T08:46:03.813 回答
1

两步:

{$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

尝试

{assign var=$array.index value=null)}

于 2012-11-18T15:20:18.770 回答