Denis VIP
Total posts: 78
22 Июнь 2014 14:34

Полю "Digits" очень не хватает возможности математической работы с введённым значением. Для максимального понимания сразу приведу пример. Сайт с услугами предположим фотографов. Фотографы сами заполняют анкеты в которых есть поле "стоимость работы" (DIgits). Предположим фотограф в поле стоимость вписал 1000 руб, а в настройках поля стоит увеличение стоимости на 20%. Соответственно при сохранении анкеты клиенту будет видна стоимость не 1000 руб, а уже 1200 руб. Очень облегчит работу модератора. Так как иначе модератор вынужден в ручном режиме исправлять все анкеты. Можно ли надеяться на внедрение данного функционала?

Последние изменения: 28 Апр 2015


Sergey
Total posts: 13,748
23 Июнь 2014 06:50

Это не совсем так работает. Если будет сохранено 1200 то при следуещем сохранения будет увеличено еще на 20%. Мы ведь не знаем эта сумма уже увеличина или нет.

Вам надо создать поле вывода, где перед выводом вы просто увеличите сумму. Таким образом пользователь всегда будет видеть 1000 а показывать будет 1200.


Denis VIP
Total posts: 78
23 Июнь 2014 22:12

То есть автоматизировать этот процесс не получится? Нужно будет следить за изменениями через систему аудита и исправлять вручную?

Sergey Таким образом пользователь всегда будет видеть 1000 а показывать будет 1200

Но это при условии, что пользователь залогинен? Если пользователь разлогинется он увидит 1000?


Sergey
Total posts: 13,748
24 Июнь 2014 00:56

Denis Нужно будет следить за изменениями через систему аудита и исправлять вручную?

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

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

<?php echo htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8');?>

а

<?php echo htmlspecialchars($this->value * 1.2, ENT_COMPAT, 'UTF-8');?>

где * 1.2 это добавление 20%.


Denis VIP
Total posts: 78
12 Апр 2015 20:57

Работает. Но если в поле "Разделитель тысячных" стоит какой либо знак,

QIP Shot - Screen 029

то при введении 10000 руб отображается не 12000 руб, а 12 руб. Это можно исправить? Или придётся отказаться от "Разделителя тысячных"? И следующий вопрос. Куда прописать команду "* 1.2" в шаблоне фильтра? Там же тоже нужно отображение не 10000 руб, а 12000 руб.


Sergey
Total posts: 13,748
23 Апр 2015 02:39

Там в шаблоне есть строка которая начинается $this->value = number_format($this->value, .... Вот тут сделайте расчет что бы он произошел до форматирования $this->value = number_format($this->value * 1.2, ... а из echo htmlspecialchars его уберите.


Denis VIP
Total posts: 78
23 Апр 2015 10:47

Отлично. Благодарю. Но остался не рещённым следующий вопрос. Куда прописать команду "* 1.2" в шаблоне фильтра? Там же тоже нужно отображение не 10000 руб, а 12000 руб.


Sergey
Total posts: 13,748
27 Апр 2015 04:30

А тут не все так просто. Если отобразить 1200 то и искать будет 1200 а в базе это 1000. Результат будетне соответсвовать. А сделать разное отображение и значение не просто.

Думаю тут будет такое решение уместно. В шаблоне вывода поля вы пишитене 1200 а 1200 (включая 20%) а в шаблоне фильра вы пишите что это цифры без 20%.


Denis VIP
Total posts: 78
27 Апр 2015 10:13

Ни чего я не понял. В анкете юзер вписывает 1000, то есть в базе данных у нас записано 1000. Шаблон вывода показывает 1200. Второй юзер вписывает 2000, то есть в базу данных у нас записывается 2000. Шаблон вывода показывает 2400. Таких юзеров будут сотни. Поэтому мы автоматизировали процес добавления 20% и вписали в шаблон вывода "* 1.2". Теперь надо в шаблон фильтра внедрить "* 1.2". Так как сейчас фильтр предлагает диапазон поиска от 1000 - до 2000.

QIP Shot - Screen 006

А надо, чтоб фильтр предлагал поиск от 1200 - до 2400. То есть фильтр берёт из базы значение 1000, добавляет команду "* 1.2" и предлагает на поиске уже 1200. Или ход моих мыслей не верен и это нужно осуществить другим путём?


Sergey
Total posts: 13,748
28 Апр 2015 04:39

Denis А надо, чтоб фильтр предлагал поиск от 1200 - до 2400.

Если так сделать, то и искать будет от 1200. А это значит что от 1000 до 1200 записи никогда не найдутся. Мы же в базе не храним 1200 а храним 1000.

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

Работает на Cobalt