Hi folks, I'm struggling with theming in D7. In D6 I can do the following: create a form function mymodule_thingy_form(&$form_state) { // build a form in the usual manner // ..... return $form; } optionally create validate and submit functions function mymodule_thingy_form_validate($form, &$form_state) { // validate form elements } function mymodule_thingy_form_submit($form, &$form_state) { // submit the form info etc } then I can render the form with .... $output = drupal_get_form('mymodule_thingy_form'); return $output; .... Now in order to control the rendering in a theme I can add an entry to the theme registry function mymodule_theme() { .... 'mymodule_thingy_form' => array( 'arguments' => array( 'form' => NULL, ), ), .... } and create a function function theme_mymodule_thingy_form($form) { $output = drupal_render($form); return $output; } The form will be automatically fed through the theme function, providing the name is the same. In D7 I get somewhat different behaviour: If I do not create an entry in the theme registry, all works as expected, but if I do, things start to behave oddly. function mymodule_theme() { .... 'mymodule_thingy_form' => array( 'variables' => array( 'form' => NULL, ), ), .... } and create a function function theme_mymodule_thingy_form($variables) { $form = $variables['form']; $output = drupal_render($form); return $output; } The form is not fed through the theme automatically and is not rendered at all, I see 'Array' where the form should be. So I theme it explicitly with: .... $form = drupal_get_form('mymodule_thingy_form'); $output = theme('mymodule_thingy_form', array('form' => $form)); return $output; .... This results in no form visible at all, though there are mangled traces of it in the source html. So I use dd($form) to find out what is going on and discover that it is going through the theme function twice and is being mangled on the second time through, so I modify the theme function. function theme_mymodule_thingy_form($variables) { $form = $variables['form']; $output = (is_array($form) ? drupal_render($form) : $form); return $output; } Phew! my form is rendered. This looks like a dreadful hack to me, what should I be doing? Any pointers would be most welcome. -- ----------------- Bob Hutchinson Midwales dot com -----------------