Smarty и Js
Почему-то ругается на синтаксис:
console.log('{$order.items.'+i+'.price}');
У меня переменная 'i', это интерация цикла js.
А $order.items.0.price, $order.items.1.price - товары.
Какая тогда нужна запись чтобы в переменной $order.items.i.price, чтобы i корректно обрабатывался.
Я попробовал поиграть c {literal}, все равно ругается.
4 ответа
Если итерация цикла js, то в момент компиляции smarty о ней ничего не известно. Оперируйте переменными JS для получения результата.
потому что у вас не правильная запись, либо так, как указано выше, либо вот так (но он не сработает :D, у вас счетчик есть)
SMARTY очень не любит фигурные скобки который используются в JS, с ними надо быть аккуратнее
P.S. вы бы лучше описали чего хотите добиться
Спасибо.
Но выглядит как костыли. А как тогда правильно?
Задача проста - надо передать в JS переменные, которые изначально Smarty.
Такие переменные как, например, номер заказа: {$order.id} - с ними все просто - он всегда один.
А товаров может быть и много, значит цикл.
Но внутри как раз и приходится менять 'i' - $order.items.i.price, чтобы узнать цену каждого следующего товара в массиве items.
Получается переменная от smarty, а счетчик из js.
Или делать цикл в smarty, а потом присваивать значения js переменным.
Например, так
И дальше уже в чистом JS перебираете элементы items