Как сделать простой расчет для продуктов prestashop в foreach Smarty?

Как сделать простой расчет для продуктов prestashop в foreach Smarty?

03.09.2019 05:35:37 Просмотров 54 Источник

в настоящее время я работаю над модулем котировок для моего Prestashop 1.7.5. Я добавил цены на продукты (путем переопределения продукта.РНР.)

И теперь, я должен сделать некоторые расчеты, когда предложение генерируется / отображается, чтобы добавить эти цены к общей сумме продуктов и общей сумме заказа.

С помощью простого foreach в шаблоне, у меня есть все мои цены.

{foreach $products as $product}
   {$product.service}
{/foreach}

ВЫХОД

0,30 € 0,10 € 0,20 € 

Но я хочу, чтобы эти числа добавляли себя друг к другу (например, здесь в общей сложности 0,60€).

Кстати, я знаю, что мы должны делать это в php-файлах, а не в шаблоне (я тоже пробовал этот способ, но очень сложный...). И мне не нужно сохранять эти цифры, это просто для отображения...

Есть идеи ?

Спасибо ;)

У вопроса есть решение - Посмотреть?

Ответы - Как сделать простой расчет для продуктов prestashop в foreach Smarty? / How to make simple calculation for prestashop products in foreach Smarty?

Является ответом!
pagliuca

04.09.2019 07:24:42

Следующее будет обрабатывать его. В первом блоке я имитирую ваши данные, чем я запускаю точно такой же foreachиз вашего вопроса, чтобы сравнить вывод.

Наконец, в третьем блоке я покажу вам код для расчета общей суммы, а также формат вывода в виде денег.

{* Sample code to simulate your data *}
{assign var="products" value=[
    ['service' => '0,30 €'],
    ['service' => '0,10 €'],
    ['service' => '0,20 €']
]}

{* Original code, exactly as showed in the question *}
{foreach $products as $product}
   {$product.service}
{/foreach}

{* This is the new code for calculating the total *}
{assign var="total" value=0}
{foreach $products as $product}
   {assign var="total" value=$total + $product.service|replace:' €':''|replace:',':'.'}
{/foreach}
Total: {$total|number_format:2:",":''} €

Выход:

0,30 € 0,10 € 0,20 € Total: 0,60 €

Но, как вы уже знаете, это очень хаки, и, как правило, не должны обрабатываться внутри шаблона, по следующим причинам:

  1. Это очень хрупко, чтобы сделать замену строк, как описано выше, чтобы удалить знак евро из service(например, сохраните его как "€0,30 "вместо" 0,30 €", достаточно, чтобы сломать логику суммирования.

https://stackoverflow.com/questions/57773889/how-to-make-simple-calculation-for-prestashop-products-in-foreach-smarty/57792442#comment102212295_57792442
@Никлас добро пожаловать! Если ответ решил вашу проблему, пожалуйста, отметьте его как "принято", чтобы ваш вопрос был удален из результатов поиска" вопросы без ответов " здесь, в Stack Overflow.
Закрыть X