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