Здравствуйте. Создал свой тип материала с помощью модуля.
Нода создаётся успешно. Затем изменяю её и жму сохранить. Далее выводятся сообщения:
* hook_load
* hook_validate
* node_form_submit_handler
* hook_update
* mynode test был обновлен.
* hook_load
Эти сообщения соответсвуют выполняемым хукам. Но я не могу понять, почему в hook_update не видно полей, которые я добавляю в hook_load.
Комментарии
--удалено
в hook_update() $node -- не нода... а что-то типа (object)$form_state['values'] при обработке (submit, validate) форм... вобщем совпадает с $node в hook_insert()
Путь $form_state['values']->$node в hook_update() можете сами отследить в этих функциях:
node_form_submit()
node_form_submit_build_node()
node_submit()
node_save()
node_invoke() -- тут запускается hook_update()
вы бы уточнили конкретную задачу.
Спасибо за ответ.
Задача такая: я добавил своё поле. В hook_update мне нужно найти запись из внешней таблицы по этому полю и внести в неё изменения.
Пытался это сделать так:
function hook_update($node) {
db_query("UPDATE mytable SET flags = %d WHERE val = %d", 1, $node->val);
}
Тогда единственное решение - вытащить $node->val по $node->nid?
Еще вопрос, какой путь проходится для вызова hook_validate (откуда вызывается node_validate)?