[development] Important nodeapi change

Karoly Negyesi karoly at negyesi.net
Wed Dec 7 06:54:11 UTC 2005


Hi!

Sorry for not announcing this change on Monday.

nodeapi op 'form' is no more. Use hook_form_alter instead. This lets you  
not just add to the node form but change at will.

See the core modules for examples. The conversation process is the  
following: let's suppose we have foo.module , and it compiles its nodeapi  
form in _foo_form which takes one argument, $node. and the last command is  
return $form (core actually had such functions). Then we can rename  
_foo_form to foo_form_alter and wrap the code as follows:

function foo_form_alter($form_id, &$form) {
   if (isset($form['type']) && $form['type']['#value'] .'_node_form' ==  
$form_id) {
     $node = $form['#node'];
     // _form_form code follows:
     $form['foo']['myfield'] = array(...);
     // the final return is not needed because $form is a reference.
   }
}

I added this to the handbook, too.

Regards

NK


More information about the development mailing list