Php 如何在hook form alter中定义的提交处理程序中获取节点id

Php 如何在hook form alter中定义的提交处理程序中获取节点id,php,drupal,variables,drupal-7,Php,Drupal,Variables,Drupal 7,是否有其他钩子可用于获取提交的新节点的节点\u 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_managem

是否有其他钩子可用于获取提交的新节点的节点\u 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'];
}

此时节点尚未实际保存,您需要实现:


检索节点id的唯一方法是使用
hook\u node\u insert
。但是,如果您希望从此钩子内部修改
节点
对象,则必须将更改通知Drupal,否则更改将不会进入数据库事务,并且将丢失

修改完节点后,调用
field\u attach\u updates('node',$node)
。例如:

function mymodule_node_insert($node){
    $node->field_myfield['und'][0]['value'] = 'a new value';

    field_attach_update('node', $node);
}

有关更多信息,请参见。

是否有办法在hook\u node\u insert中获取表单值?…我需要这些信息。据我所知,在传递到
node\u save
对象时,额外的表单元素会通过键添加到
$form['my\u element')对象中。因此,如果您有这样的表单元素:
$form['my\u element']=…<代码> >您应该能够在<代码> HoojnNoDeIX插入< /COD>中使用<代码> $NoCT-MyOnEngult<代码> >同时在HoojnNoDeIdEnter()中提供节点ID,重要的是要注意节点尚未提交到数据库(它在事务的中间),此时,如果不直接写入数据库,就无法修改节点。使用Clive建议的其他表单元素($node->my_元素)对我来说非常有用。谢谢你的提示。
function mymodule_node_insert($node){
    $node->field_myfield['und'][0]['value'] = 'a new value';

    field_attach_update('node', $node);
}