Smarty: сбросить индекс массива в шаблоне - PullRequest
4 голосов
/ 19 сентября 2011

Я хотел бы добавить {unset($array['index'])} в шаблон Smarty 3.

Поддерживается ли такой синтаксис (или аналогичный)? После Google и чтения документов я не могу найти что-то удовлетворяющее.

Может быть, мне следует запросить функцию в команде разработчиков Smarty? :)

В любом случае, как бы вы сделали это с учетом доступных в настоящее время функций шаблона?

Ответы [ 7 ]

5 голосов
/ 19 сентября 2011

Я не думаю, что в Smarty есть прямая поддержка этому.Вы всегда можете сделать это с помощью тега smarty {php}, однако я настоятельно рекомендую вам не делать этого.Логика не входит в шаблон уровня представления.

3 голосов
/ 26 июля 2013

Хотя есть способ: -)

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

Даже не рекомендуется делать это в шаблонах, иногда это может сэкономить ваше время.

2 голосов
/ 27 февраля 2012

попробуйте

{$array.index = null}
1 голос
/ 19 сентября 2011

Основная идея движка шаблонов состоит в том, что вы можете выполнять всю загрузку, логику, сброс и т. Д. Перед анализом представления. С учетом вышесказанного не следует удалять данные в шаблоне, и я уверен, что они не будут реализовывать этот запрос функции.

Я также не понимаю, почему вы хотите сбросить переменную smarty: просто не используйте ее, и она не будет отображаться.

0 голосов
/ 18 ноября 2012

try

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

0 голосов
/ 19 сентября 2011

вы не перезаписываете значение?

{assign var="array" value=array()}
{$array['index']='1'}
{$array['index2']='2'}
{$array['index']=''}
{$array|print_r}

это сработало для меня в smarty <3, не знаю, работает ли оно до сих пор, поскольку они действительно испортили smarty. </p>

0 голосов
/ 19 сентября 2011

Я думаю, вам этого не следует, потому что вся логика должна быть в коде, а не в шаблонах.

Но вы можете написать свой собственный модификатор http://www.smarty.net/docs/en/plugins.modifiers.tpl

...