Posted by pradeepg_jain on August 28, 2009 at 8:46am
<?php
function theme_test_form($form) {
$output = '';
$output .= drupal_render($form['name']);
$output .= '<div id="foo">';
$output .= drupal_render($form['age']);
$output .= '<div class="messages">';
$output .= drupal_render($form['details']);
$output .= '</div></div>';
$output .= drupal_render($form);
return $output;
}
function test_form($form_state) {
// Access log settings:
$form['firstname'] = array(
'#type' => 'textfield',
'#title' => t('First Name'),
'#size' => 30,
'#maxlength' => 64,
'#description' => t('Enter Name'),
'#required' => TRUE,
);
$form['age'] = array(
'#type' => 'textfield',
'#title' => t('Age'),
'#size' => 30,
'#maxlength' => 64,
'#description' => t('Enter the Age'),
'#required' => TRUE,
);
$form['place'] = array(
'#type' => 'textfield',
'#title' => t('Place'),
'#size' => 30,
'#maxlength' => 64,
'#description' => t('Enter place'),
'#required' => TRUE,
);
$form['hidden'] = array('#type' => 'value', '#value' => 'is_it_here');
$form['submit'] = array('#type' => 'submit', '#value' => t('Save'));
return $form;
}
function test_page() {
return drupal_get_form('test_form');
}
function test_form_validate($form, &$form_state) {
/*if ($form_state['values']['firstname'] == '') {
form_set_error('', t('You must enter your name.'));
}
if ($form_state['values']['age'] == '') {
form_set_error('', t('You must enter your age.'));
}*/
}
function test_form_submit($form, &$form_state) {
db_query("INSERT INTO {new_form} (name, age) VALUES ('%s', %d)", $form_state['values']['name'], $form_state['values']['age']);
drupal_set_message(t('Your form has been saved.'));
}
print test_page();
?>i used the code from the http://api.drupal.org/api/drupal/developer--topics--forms_api.html/6 and the form gets displayed and everythings working fine .but the theme_test_form is not working even if i have added the corresponding css in theme.css file. IS there any additional work to be done for css to get applied or theme change to get applied..
Thanks,
Pradeep
Comments
Hey Pradeep, You need to add
Hey Pradeep,
You need to add $form['#theme'] = 'test_form'; This tells the functions that process the form to call theme_test_form
Cheers,
Gene
Gene Bernier
gene@cheekymonkeymedia.ca
Top Monkey Wrencher
Cheeky Monkey Media
http://cheekymonkeymedia.ca
Adding theme to custom form...
Hi Pradeep/Gene:
I added the #theme attribute to the form, but still couldn't get the form to call the theme function. Is there any additional step involved in calling the custom theme function.
Thanks.
Arun M
Thanks
Arun M
"Satisfaction lies in the effort, not the attainment. Full effort is full victory"
Have you registered the theme
Have you registered the theme function in hook_theme()?
Full-time freelancer, always looking for work.
jaypan.com (my portfolio)
I just did...
I just registered the theme and it works like a charm.
Thanks
Arun M
"Satisfaction lies in the effort, not the attainment. Full effort is full victory"
How should I do that? Have
How should I do that?
Have the same problem.
Implement hook_theme() in
Implement hook_theme() in your module.
<?phpfunction yourmodule_theme() {
return array(
'test_form' => array(
'arguments' => array('form' => NULL),
),
);
}
?>
Clear the cache after implementing this.