Поля -> обработка значения другого поля

InstantCMS 2.X

Вычисление значения на основе данных другого поля

#1 10 ноября 2017 в 12:59
Уважаемые коллеги! Снова обращаюсь за помощью.

ЗАДАЧА. Есть стандартное поле даты (name = date), которое заполняется юзером. Нужно сделать поле (name = datediff), которое будет вычислят разницу в днях между полем date и сегодняшним днем.

ЧТО Я ДЕЛАЮ НЕ ТАК?
Создаю два файла: /system/fields/datediff.php и /templates/default/assets/fields/datediff.tpl.php

В файле datediff.php
  1. <?php
  2. class fieldDatediff extends cmsFormField {
  3. public $title = 'Прошло дней';
  4. public $is_virtual = true; //Потому что в базу заносить нечего, юзер ничего вводить не будет.
  5. public $sql = 'text NULL DEFAULT NULL';
  6. public $var_type = 'string';
  7. public $allow_index = false;
  8.  
  9. }
  10. ?>
В файле datediff.tpl.php
  1. <?php if($field->title) { ?>
  2. <label for="<?php echo $field->id; ?>"><?php echo $field->title; ?></label>
  3. <?php } ?>
  4.  
  5. //Теперь выводим разницу в днях
  6. <?php
  7. $startdate = $item['field_date'];
  8. $days = ceil((strtotime("$startdate") - time()) / 86400);
  9. echo $days*-1;
  10. ?>
Но схема не работает. Поле создается, но ничего не выводится. Дебаггер включен, но не ругается. Где я дурак?
#2 10 ноября 2017 в 14:24
iDrevniy, в функцию store класса /system/fields/datediff.php вставь свою логику) вот документация docs.instantcms.ru/dev/forms/field-file
#3 10 ноября 2017 в 14:34

iDrevniy, в функцию store класса /system/fields/datediff.php вставь свою логику) вот документация docs.instantcms.ru/dev/forms/field-file

ideasdigger

Читал. Но не догоняю. Почему не отображается во фронтэнде.
#4 10 ноября 2017 в 14:44


iDrevniy, в функцию store класса /system/fields/datediff.php вставь свою логику) вот документация docs.instantcms.ru/dev/forms/field-file

ideasdigger

Читал. Но не догоняю. Почему не отображается во фронтэнде.

iDrevniy
отписал в лс)
#5 10 ноября 2017 в 15:41

ЧТО Я ДЕЛАЮ НЕ ТАК?

iDrevniy
На сколько я понял datediff.tpl.php и не должен выводить разницу в днях — он используется для формирования самого поля которое юзер заполняет при создании контента

А вывод должен формироваться функцией parse
в /system/fields/datediff.php
#6 10 ноября 2017 в 17:10

А вывод должен формироваться функцией parse
в /system/fields/datediff.php

Sonat

Так и есть.

Спасибоideasdigger. Все получилось в лучшем виде. Тема закрыта.

Может кому пригодится:
datediff.php
Группе, к которой вы принадлежите, запрещено просматривать этот скрытый текст

datediff.tpl.php
Группе, к которой вы принадлежите, запрещено просматривать этот скрытый текст
#7 11 ноября 2017 в 09:57

ЗАДАЧА. Есть стандартное поле даты (name = date), которое заполняется юзером. Нужно сделать поле (name = datediff), которое будет вычислят разницу в днях между полем date и сегодняшним днем.

iDrevniy
А зачем вы изобретаете велосипед, который вроде есть в коробке (тип поля ВОЗРАСТ)? Или он не совсем подходит под вашу задачу?
#8 12 ноября 2017 в 03:36


ЗАДАЧА. Есть стандартное поле даты (name = date), которое заполняется юзером. Нужно сделать поле (name = datediff), которое будет вычислят разницу в днях между полем date и сегодняшним днем.

iDrevniy
А зачем вы изобретаете велосипед, который вроде есть в коробке (тип поля ВОЗРАСТ)? Или он не совсем подходит под вашу задачу?

AndroS
у него не стояла задача приёма поля ему стояла задача на лету по заданному алгоритму обрабатывать другое, как на странице записи так и при редактирование
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.