Передача массива в качестве параметра в пользовательскую функцию - PullRequest
3 голосов
/ 27 марта 2011

Эй, Мне было интересно, если бы можно было передать ассоциативный массив в качестве параметра в пользовательской функции. Это мой сценарий:

В php-файле я установил массив:

$dataArr = array('one'=>'1','two'=>'2','three'=>'3');
$tpl->assign('dataArr',$dataArr);

Это моя пользовательская функция, потускнел

  function smarty_function_drawChart($params, &$smarty){
            print_r($params);
    }

Это мой вызов функции в шаблоне

{drawChart data={$dataArr} title='Title of the Chart'}

Проблема, с которой я столкнулся, заключается в том, что если вы заметили, где я печатаю_r ($ params), то это показывает:

Array
(
    [data] => Array
    [title] => Title of the Chart
)

Кажется, что передается строка 'Array', а не фактический массив. Я выполнил отладку прямо перед передачей $ dataArr, который показывает, что {$ dataArr.one} имеет значение. Однажды внутри моей пользовательской функции $ params ['data']. Одна не существует.

Есть идеи, что я делаю не так?

Спасибо
Леви

1 Ответ

0 голосов
/ 27 марта 2011

Я все еще не уверен на 100%, почему мой код выше не работает.Я думаю, что скобки работают так же, как «эхо» в php, поэтому в функцию передается строка «Array».Я смог заставить его работать, просто сняв скобки вокруг переменной $ dataArr.

Это был мой первоначальный вызов:

{drawChart data={$dataArr} title='Title of the Chart'}

Это мой новый вызов, который работает

{drawChart data=$dataArr title='Title of the Chart'}
...