节点更新:获取旧值

时间:2010-08-17 21:11:33

标签: php drupal drupal-6

我正在使用nodeapi更新更新节点,但我需要在幕后做更多事情,这需要我知道字段的旧值/有没有办法可以获得字段的旧值它被覆盖了。

1 个答案:

答案 0 :(得分:2)

修改

hook_nodeapi()仅对新的$node对象起作用,因此我之前的回答对您没有帮助。相反,您需要在提交时访问节点。为此,您需要注册自己的提交处理程序,该提交程序将在提交节点表单时被调用。它可以让您访问当前值和新值:

function test_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id === 'contenttype_node_form') { // Replace contenttype
    $form['#submit'][] = 'test_submit'; // Add a submit handler
  }
}

function test_submit($form, &$form_state) {
   // Load the current node object
  $node = node_load($form_state['values']['nid']); 

  // Display the current node object's values
  dsm($node);

  // Display the submitted values
  dsm($form_state['values']);
}

update被称为$node对象已更新。您可能对验证后检查节点的presave或验证前检查它的validate更感兴趣;在保存新$op对象之前,$node都会触发。