Smarty:在模板中取消设置数组索引

Fro*_*y Z 4 php arrays templates smarty unset

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

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

也许我应该向Smarty开发团队索要一个功能请求?:)

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

Ale*_*s G 5

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

  • 如果"逻辑不属于演示文稿"你不需要Smarty,只需要`strtr()`:-P但是,为了使这个评论有用,你是否认为你可能不需要做你的建议,因为你可以循环这个东西并使用`{if}`和`{continue}`来跳过你不需要的密钥?如[例7.42]中所述(http://www.smarty.net/docs/en/language.function.foreach.tpl) (3认同)
  • @AleksG想要"修改"用于表示的数据是非常合理的,这可能合理地需要新变量,例如数据子集的排序视图.也许在这里,提问者认为,不是在第二个变量中复制模板输入数据,而是修改输入数据可能更有效,如果模板中稍后不再需要进一步的表示,这可能是可以接受的.要改变你的论点:你不希望控制器中有表示逻辑. (3认同)

DUz*_*zun 5

不过有办法:-)

{$array=$array|array_diff_key:(['index']|array_flip)}
Run Code Online (Sandbox Code Playgroud)

尽管在模板中执行此操作不是一个好主意,但有时它可能会节省您的时间。