Всем привет. Пытаюсь изменить значение поля юзера используя db_update но при выполнении следующего кода в файле template.php включеной темы ничего не происходит:
<?php
if(isset($_POST['action']) && $_POST['action'] === 'ajaxedituser'){
db_update('dru_field_data_field_user_notes')
->fields(array('field_user_notes_value' => '345'))
->condition('entity_id', '16859')
->execute();
};
?>
В файлах .tpl.php срабатывает, очистка кеша не помогает.
Мне нужно запускать это по ajax post запросу но как запустить этот код в виде функции не разобрался, по этому пока проверяю на наличие пост запроса.
Я в курсе что для этого обычно пишут свои модули но стоит ли это делать из за одной маленькой функции? А что если таких функций будет много? Можно их напихать в один модуль чтобы не создавать миллион?
И можно ли подобное оформить в виде функции чтобы можно было запустить ajax post'ом?
Комментарии
В модуль свой + на элемент формы через '#ajax' вешаем функцию.
У поля есть еще табличка revision_field* . Ее тоже надо обновлять. Гугл в помощь. Апд: видимо неверно я понял вопрос, но вообще - этого кода должно быть недостаточно для обновления поля
значение поля я бы обновлял используя entity_metadata_wrapper
Я пытаюсь как можно меньше использовать друпал в обновлении полей поскольку один сайт вешает 12-ти ядерный сервер. Проблема в модуле editablefields и я пытаюсь написать ему альтернативу. Очень много editablefields полей и они нонстопно редактируются кучей юзеров. Я не хочу даже ajax друпальский использовать. Писал костыль в котором редактировал поля обычными php запросами к базе, работало быстро но много мороки и вообще это не правильно. Хочу использовать только db api. У кого какие мнения по этому поводу?
Мороки всеравно будет много.. И в итоге "костыль" превратиться в подобие EntityMetadataWrapper только хуже..
Проанализируйте работу editablefields - его "узкие" места..
Скорее всего можно что-то оптимизировать
UPD.. Как вариант.
Не сохранять сущности с измененными полями сразу в базу, а например как это сделано в форме настройки вьюса:
Данные сохраняются в кэш с привязкой к сессии..
А по "специальной" кнопке на странице уже сохраняюся на "постоянное" место.
Не используйте field и views, осторожно используйте panels и features