Как организовать добавление позиций с вычислением

Аватар пользователя venji venji 17 мая в 19:41

Приветствую, есть такая задача: при создании ноды добавлять к ней позиции в виде, яблоки, груши, сливы...
У позиций есть как вес так и цена, которые необходимо вписывать вручную.
Как я это представляю, при создании ноды есть позиции с чекбоксами (возможно термины), на против них два инпута вес и цена, вписываем вес и цену, после сохранения получаем:
Яблоки 4кг по 10р. = 40р.
Груши 2кг по 10р. = 20р.
И того = 60р.

Как это все можно реализовать? Спасибо!

0 Thanks

Комментарии

Аватар пользователя gun_dose gun_dose 17 мая в 23:01

Рулес вообще тут не нужен. Просто в коде пишем (при использовании double field):

<?php
$x 
$node->field_что-то-там['und'][0]['first'] * $node->field_что-то-там['und'][0]['second'];?>

Ну и вывод типа

<?php
print $node->field_что-то-там['und'][0]['first'] . ' умножить на ' $node->field_что-то-там['und'][0]['second'] . ' равно ' $x;
 
?>
Аватар пользователя bumble bumble 17 мая в 23:17

Кхм-кхм.... Таки, вордпрессовщиной попахивает.

По многим причинам.
Прежде всего - из-за выноса логики в слой представления.
Помимо прочего, отсутствие проверок и обращение к неизвестным свойствам, неизвестным массивам... Все это оочень нестабильно, да и выглядит "плохо". А ведь это еще без циклов.

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

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

А если уже писать код - делать нормальный форматтер, специализированный, поддерживаемый, этот самый -Drupal-way'ный.

Аватар пользователя gun_dose gun_dose 17 мая в 23:41

Всё равно семёрку уже никто не поддерживает, поэтому можно бесчинствовать в шаблонах без зазрения совести😂 А если серьёзно, то умножение двух переменных не такая уж и логика.

Аватар пользователя bumble bumble 17 мая в 23:56

Ну, не знаю. Поддерживает, не поддерживает, а делать нужно стремиться правильно.

На счет логики - не думаю что есть какая-то градация. Она либо логика, либо нет.

Пускай, в общем, ТС решает сам для себя путь, которым идти. Варианты перед ним раскрыты.

Аватар пользователя gun_dose gun_dose 18 мая в 0:09

Если мыслить так категорично, то использование if и foreach в шаблонах тоже недопустимо ;)

Аватар пользователя bumble bumble 18 мая в 0:24

Все верно.
Вот только важно отделять логику от функциональной составляющей шаблонов.
Если, к примеру, выводится список (<ul/> | <ol/> всякие, или просто перечень одинаковых строк) - это вполне себе допустимый вариант.
Также и с проверками - проверить, например, существование значение - может быть нормальной практикой. В тоже время всякие "$is_front" и "$is_anonymous" для вывода абсолютно разных лейаутов (прописанных в том же шаблоне) - это уже скатывание в месс.
Но, в идеале - да, всего этого стоит максимально избегать.

Аватар пользователя venji venji 18 мая в 12:20

Частично решил вопрос, Field collection + DS поле с кодом и вуаля, считает, получаем
Яблоки
вес 10
цена 10
итого 100

Таких составных позиций может быть много, 5-10 и тд..(Количество значений: неограничен) как теперь реализовать чтобы "Итого" со всех позиций суммировались?