Ответ 1
Smarty3 позволяет вам {$var = ['foo' => 'bar', 'sub' => [1, 2, 3]]}
и {$var.foo = 'other'}
если этих параметров недостаточно, напишите функцию плагина.
Мне нужно создать новый массив из другого одномерного массива в шаблоне smarty. Итак, каковы наилучшие возможности для создания массива в файле шаблона.
Спасибо, Сачин
Smarty3 позволяет вам {$var = ['foo' => 'bar', 'sub' => [1, 2, 3]]}
и {$var.foo = 'other'}
если этих параметров недостаточно, напишите функцию плагина.
В прошлом я использовал два подхода - злой и грязный - чтобы быстро назначить массив внутри tpl:
{* Am I evil? *}
{php}
$array = array("cat", "dog", "rabbit");
$this->assign("myArray", $array);
{/php}
{* Am I dirty? *}
{assign var='myArray' value=','|explode:"cat,dog,rabbit"}
Оба результата приводят к тому, что ваш массив доступен внутри шаблона для создания простого цикла. В любом случае, я всегда менял свой код таким образом, поэтому мне вообще этого не нужно.
На самом деле это очень просто:
{assign 'myArray' ['cat', 'dog', 'rabbit']}
Я советую против этого, но этот плагин позволяет это: http://smarty.incutio.com/?page=set
С точки зрения MVC часть просмотра не отвечает только за отображение данных. Я бы посоветовал вам переосмыслить приложение таким образом, чтобы он позволял обрабатывать данные в модели и передавать их для отображения только в представлении.