передача массива в функцию смарти

Ivanov

Новичок
передача массива в функцию смарти

написал функцию для смарти, мне нужно в качестве ее параметра в шаблоне передать массив, как это сделать

{my_function var_array=??? }
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
В $params все хранится в виде ассоциативного массива
 

Ivanov

Новичок
мне нужно чтобы $params['var_array'] был ассоциативным массивом

я пробывал {my_function var_array=array(1,2,3) }, но передается в функцию
my_function переменная var_array как строка array(1,2,3)
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
{my_function var_array=array(1,2,3) }
В данном случае переменная воспринимается и будет восприниматься как строка.

У тебя несколько выходов:
1
$smarty->assign('varName', Array(1,2,3));
{my_function var_array=$varName }

2
{my_function var1=1, var2=2, var3=3}

3
{my_function var1='1,2,3'}
+ explode внутри твоей функции.
 

Ivanov

Новичок
1. у меня массив должен формироваться в шаблоне, вариант отпадает

3. я примерно так и решил задачу, написал функцию, которая присваивает переменной массив значений

function smarty_function_set_array( $params, &$smarty ){

if ( isset($params['assign']) && $params['assign'] !== '' && isset($params['array']) && $params['array'] !== '' ){

$smarty->assign($params['assign'], explode(',', $params['array']));

}

}

используется так

{set_array assign=foo array='1,2,3'}

далее переменная foo это массив

нашел еще такой вариант http://smarty.incutio.com/?page=Set
 

zerkms

TDD infected
Команда форума
1. у меня массив должен формироваться в шаблоне, вариант отпадает
{php} юзай, чего уж там.... раз уж превращать код в лапшу - то всеми доступными средствами.
 
Сверху