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

Есть ли другой хук, который я могу использовать, чтобы получить 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 для получения дополнительной информации.

Другие вопросы по тегам