Как я могу получить идентификатор узла в обработчике отправки, определенном в форме изменения хука - PullRequest
2 голосов
/ 11 октября 2011

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

5 голосов
/ 11 октября 2011

В этот момент узел фактически не был сохранен, вам нужно реализовать hook_node_insert:

function dc_project_management_node_insert($node) {
  $nid = $node->nid;
}
2 голосов
/ 07 февраля 2013

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

...