function example_module_node_view($node, $view_mode, $langcode)
{
$f = drupal_get_form(\'example_module_form\', $node);
$node->content[\'data_collection_f
The return from drupal_get_form
is actually a render array itself so you could just do this:
$f = drupal_get_form('example_module_form', $node);
$f['#weight'] = 1;
$node->content['data_collection_form'] = $f;
If you do want to do it the other way though the form should be a renderable 'element', so the key shouldn't be prefixed by #
:
$f = drupal_get_form('example_module_form', $node);
$node->content['data_collection_form'] = array(0 => $f, '#weight' => 1);
All entries in a render array with a key prefixed with #
are considered properties, while those that aren't are considered 'children' and are recursively rendered.
Clive answer doesn't work in my case. I needed to call drupal_render and pass it as markup.
$form = drupal_get_form('example_module_form', $node);
$node->content['data_collection_form'] = array(
'#markup' => drupal_render($form),
'#weight' => 10,
);
This work, but I'm not sure if this is the correct way.