Как я могу получить идентификатор узла в пределах представить обработчик, определенный в форме крюка изменить


Есть ли другой Хук, который я могу использовать, чтобы получить 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 2

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 для получения дополнительной информации.