Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Получить из массива данные и передать в шаблон через Smarty
Форумы портала PHP.SU » » Вопросы новичков » Получить из массива данные и передать в шаблон через Smarty

Страниц (1): [1]
 

1. dropoff - 19 Октября, 2011 - 11:59:29 - перейти к сообщению
Добрый день.

Ребята, такой вопрос.

Есть массив
PHP:
скопировать код в буфер обмена
  1. shopcart Object
  2. (
  3.     [tax] => Array
  4.         (
  5.             [1] => Array
  6.                 (
  7.                     [value] => 2684.27142857
  8.                     [desc] => Включая налог
  9.                 )
  10.  
  11.         )
  12.  
  13. )


В шаблон передается сейчас таким образом
PHP:
скопировать код в буфер обмена
  1. $tpl->assign('UST', $_SESSION['cart']->show_tax());

В итоге получаю одну метку {$UST}, которая выводит Включая налог 2684

А мне нужно получать две
К примеру
{$UST_DESC} - Включая налог
{$UST_VALUE} - 2684

Чтобы в шаблоне их вставить как нужно.

Не могу понять как разрулить это все( Не хочется менять метод show_tax(), так как много где его он используется. А все переделывать...
2. EuGen - 19 Октября, 2011 - 12:06:08 - перейти к сообщению
dropoff пишет:
Не хочется менять метод show_tax()

И все же придется, так как если он возвращает одно значение, то он ниоткуда не возьмет второе.
Либо написать еще один метод.
Либо изменить show_tax так, чтобы не пришлось переписывать все места, где он используется. Например, так:
PHP:
скопировать код в буфер обмена
  1. function show_tax($bReturnLabel=false)
  2. {
  3.    if($bReturnLabel)
  4.    {
  5.       //возвращать массив из двух требуемых элементов
  6.    }
  7.    else
  8.    {
  9.       //код по-умолчанию, с возвратом одного значения
  10.    }
  11. }

- так как $bReturnLabel по-умолчанию уже задано в определении метода, то нигде в других местах не нужно будет ничего переписывать (имею ввиду вызов метода), а в Вашем примере вызвать просто
PHP:
скопировать код в буфер обмена
  1. $_SESSION['cart']->show_tax(true)

Хотя лучше регулировать вывод не логической переменной (так как мало ли Вам потребуется добавить еще один способ вывода), а некоторым параметром, задающим формат вывода.
3. dropoff - 19 Октября, 2011 - 12:16:22 - перейти к сообщению
Спасибо!
Наверное сделаю вывод в зависимости от параметра.

Я почему-то думал, что можно как-то через смарти получить любое значение из массива.

 

Powered by ExBB FM 1.0 RC1