Как я могу получить идентификатор узла в пределах представить обработчик, определенный в форме крюка изменить
Есть ли другой Хук, который я могу использовать, чтобы получить node_id нового узла, который передается?
function dc_project_management_form_bug_request_node_form_alter(&$form, &$form_state, $form_id)
{
$form['#submit'][] = 'dc_project_management_process_bug_request_milestone_submit';
}
function dc_project_management_process_bug_request_milestone_submit($form, &$form_state)
{
//NULL when submitting new node
$form_state['values']['nid'];
}
2 ответа:
Узел фактически не был сохранен в этот момент, вам нужно реализовать
hook_node_insert
:function dc_project_management_node_insert($node) { $nid = $node->nid; }
Единственный способ получить идентификатор узла-использовать
После того, как вы закончите изменять узел, вызовитеhook_node_insert
. Однако, если вы хотите внести изменения в объектnode
изнутри этого крючка, вы должны уведомить Drupal об изменениях, иначе изменения не будут внесены в транзакцию базы данных и будут потеряны.field_attach_updates('node', $node)
. Например:function mymodule_node_insert($node){ $node->field_myfield['und'][0]['value'] = 'a new value'; field_attach_update('node', $node); }
См. http://timonweb.com/how-save-yourself-some-hair-when-manipulating-node-fields для получения дополнительной информации.