api в template.php

Главные вкладки

Аватар пользователя arhimed_2.0 arhimed_2.0 24 ноября 2014 в 10:03

Всем привет. Пытаюсь изменить значение поля юзера используя 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'ом?

Комментарии

Аватар пользователя imarat imarat 24 ноября 2014 в 18:51

У поля есть еще табличка revision_field* . Ее тоже надо обновлять. Гугл в помощь. Апд: видимо неверно я понял вопрос, но вообще - этого кода должно быть недостаточно для обновления поля

Аватар пользователя arhimed_2.0 arhimed_2.0 25 ноября 2014 в 0:07

Я пытаюсь как можно меньше использовать друпал в обновлении полей поскольку один сайт вешает 12-ти ядерный сервер. Проблема в модуле editablefields и я пытаюсь написать ему альтернативу. Очень много editablefields полей и они нонстопно редактируются кучей юзеров. Я не хочу даже ajax друпальский использовать. Писал костыль в котором редактировал поля обычными php запросами к базе, работало быстро но много мороки и вообще это не правильно. Хочу использовать только db api. У кого какие мнения по этому поводу?

Аватар пользователя Orion76 Orion76 25 ноября 2014 в 7:32

Мороки всеравно будет много.. И в итоге "костыль" превратиться в подобие EntityMetadataWrapper только хуже..
Проанализируйте работу editablefields - его "узкие" места..
Скорее всего можно что-то оптимизировать

UPD.. Как вариант.
Не сохранять сущности с измененными полями сразу в базу, а например как это сделано в форме настройки вьюса:
Данные сохраняются в кэш с привязкой к сессии..
А по "специальной" кнопке на странице уже сохраняюся на "постоянное" место.