On 7/4/06, Augustin (Beginner) <drupal.beginner@wechange.org> wrote:
In the code below, I create a hook_menu() callback to the function formtest() with a form. I want to be able to print some information according to the form that has just been submitted (here, a simple text string), then reprint the form below that. I know that $_POST['op'] is set when I submit (and the process die()s when I uncomment that line), but I can't get the information submitted to be displayed above the form.
I have tried using the function formtest_submit() but returning a value there doesn't get the expected result (it seems it's a path callback).
That's correct. I have searched the extensive documentation, but all there is is how to
build a form, not how to process and display the information.
Am I, for the third time this week, missing something obvious and simple?
You need to save the data somewhere. There are a number of possibiilites: - save it in $_SESSION, - redirect to a path with the text attached to the url), - save it in a variable or other db table, - disable redirecting. (there may be more options) BTW: your data is in $_POST['edit']['text'] not $_POST['text'] So your example code becomes, if you disable redirects (last option): <?php function test_menu($may_cache = FALSE) { $items = array(); $items[] = array( 'path' => 'test/formtest', 'title' => t('Test form api'), 'access' => TRUE, 'callback' => 'test_formtest', 'type' => MENU_NORMAL_ITEM, ); return $items; } function test_formtest() { $form = array(); if (!empty($_POST['edit']['text'])) { $form['entered-text'] = array( '#type' => 'item', '#title' => t('Entered text'), '#value' => $_POST['edit']['text'], ); } $form['text'] = array( '#type' => 'textfield', '#title' => t('Enter some text'), ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Enter'), ); return drupal_get_form('test_formtest', $form); } function test_formtest_submit($form_id, $form_values) { return FALSE; } ?> Depending on your case, you may need to test inside _submit() which button is pressed (using $_POST['op']) and redirect to another page depending on the button (eg "Preview" or "Submit"). You may prefer to save the data in $_SESSION if you want the data to be available again when they go to the form again, the _submit() then becomes (with some small changes to the form obviosuly): <?php function test_formtest_submit($form_id, $form_values) { $_SESSION['test_formtest'] = $form_values; } ?> Hope this helps, Robrecht