我正在使用nodeapi更新更新节点,但我需要在幕后做更多事情,这需要我知道字段的旧值/有没有办法可以获得字段的旧值它被覆盖了。
答案 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
都会触发。