Form API і сторонній модуль

Доброго дня.
Я новачок в Drupal.
Розробляю модуль поповнення рахунку на сайті.
Є поле в профілі користувача, створене за допомогою Form API, яке містить поточний баланс на рахунку.

В своєму модулі я напряму із БД ( табл. field_data_field_account ) отримую значення балансу і збільшую його на суму приходу. Дані оновлюю в таблицях field_revision_field_account і field_data_field_account.

Після цих маніпуляцій в БД є актуальна сума, але на сторінках сайту дані все рівно не оновлені. Оновлюються коли від імені адміністратора очищаю кеші.

Підозрюю, що мав би звертатись до поля через АРІ...

Може хтось підказати, як це зробити правильно, і так щоб дані оновлювались відразу по надходженні платежу, і без маніпуляцій з кешем?

Коментарів:

1

Коментувати

Увійдіть або зареєструйтесь, щоб додати коментар

Коментарі

Я новачок в космічній галузі, розробляю ракетний двигун...))) улыбнуло
Без манипуляций с кешем:
а) не кешируйте данную часть функционала;
б) очищайте кеш программно в work flow Вашего модуля;

PS Обычно все программеры по совместительству занимаются телепатией и экзорцизмом, и только по названию полей должны догадываться с какой версией Drupal Вы работаете;)

+)))
Та справа в тому, що двигун зібраний, і навіть літає )
Тільки от ще би без костиля заводився...

Кешування конкретного поля в Field API відключено, але ж я змінюю дані прямо в БД - і підозрюю, що правильно було б через якийсь хук чи триггер.

Drupal 7.44.

Щодо телепатії - просто сумніваюсь, що тут хтось читатиме простині з моїм кодом.
Думав, може хто хоч пошле в правильному напрямку ...

Сума на рахунку в профілі - якщо тут змінити і зберегти, то оновлюється миттєво.
Сума на рахунку в профілі

Налаштування в'юшки цього поля, кешування вимкнене
налаштування поля

Дані із БД, тут вже нові, а в скріні з профіля все ще старі
Дані в БД після польоту

Може я пропустив якийсь свисток, що дані повинні оновитись?

Порятунок потопаючого - справа рук самого потопаючого.
Darkdim - дякую за небайдужість, а то тут на кожну 1 тис. переглядів 1 відповідь...

Рішення знайдене, але могло б бути краще.
Все-таки не зважаючи на вказівку не кешувати, Field API таки створює кеш.
Наразі додавання в модуль команди field_cache_clear(TRUE) зняло проблему.

Це як рибу динамітом глушити.
Зможе хто підказати елегантніше рішення - you are welcome :)

Порятунок потопаючого - справа рук самого потопаючого.
Darkdim - дякую за небайдужість, а то тут на кожну 1 тис. переглядів 1 відповідь...

Работа сайта drupal.ua далека от нормальной, хотя тут все такие прохрамисты, шо аж куда там(сарказм), это первая причина.
Вторая - народ поделился по шарашкам, и зарабатывают бабло, поэтому всем максимально пофиг. Это тоже моя личная точка зрения, не обессудьте. Отдельный респект харьковской группе Adyax, за их кафешки;)

Наразі додавання в модуль команди field_cache_clear(TRUE) зняло проблему.

https://api.drupal.org/api/drupal/modules!field!field.module/function/field_cache_clear/7.x в эту функцию нет необходимости передавать аргумент, ну и кроме того, она служит оберткой для вызова других двух функций:

function field_cache_clear() {
cache_clear_all('*', 'cache_field', TRUE);
field_info_cache_clear();
}

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

Отдельный респект харьковской группе Adyax, за их кафешки;)
Користуючись нагодою, хочу передати привіт ... )

До Харкова мені трохи далеко.
Те, що сайт ледве дихає я помітив, шкода - бо гугл його в топі пошуку подає, і ніяких альтернатив.

Drupal як CMS кльова, шкода що сайт в такому стані.

Те, що сайт ледве дихає я помітив, шкода - бо гугл його в топі пошуку подає, і ніяких альтернатив.

Чому ніяких? Взять за "то самое место" администраторов и помочь им. Вот только непонятно кто сейчас рулит. Раньше вроде как Слава Рысь этим занимался, если я не ошибаюсь