A quick stab at a flowchart of the drupal_get_form() function. There are lots of subtleties that this glosses over, but it captures the overall progression.
Submitted by FGM (not verified) on October 1, 2006 - 12:23pm.
Thanks for the diagram. I think the Y/N choices are missing, though.
I tried to add them: you can recover the modified file from [[http://blog.riff.org/files/drupal_get_form.png]], and remove this comment afterwards (but check whether they are in the proper places !).
Submitted by Sal Peralta (not verified) on January 21, 2007 - 12:14pm.
I don't understand why the only options are to return the original form or do a redirect. How does one return data retrieved from a form query (i.e., use a form to do a search on content and return the results)?
For example, given a form that calls the following _submit function, how does one display the returned data?
function listing_basic_form_submit($form_id,$form_values) {
db_set_active('housing');
$city = $form_values['basic']['city'];
$low = $form_values['basic']['low'];
$high = $form_values['basic']['high'];
$sql_cnt = "SELECT COUNT(DISTINCT(id)) from residential where city='$city' AND low=$low AND high=$high";
$result = pager_query(db_rewrite_sql("SELECT id,city,ListPrice,area from residential where city='$city' AND low=$low AND high=$high"), 5,0,$sql_cnt);
db_set_active('default');
return $result;
}
This is were the #multistep mode for drupal's form handling comes in. To do what you're looking for, you would want to turn it into a #multistep form, turn #redirect off, and put the display of the search results into the form handling code itself. Check out this article on Lullabot.com for a very simple example.
Irony is Karl Rove lecturing Obama not to politicize the process of appointing states attorneys.
—
1 hour ago
Best summary ever: "My name is Ulrich Haarbürste and I like to write stories about Roy Orbison being wrapped in cling-film." Oh, Internets.
—
4 hours ago
@domesticat I believe you're thinking of the "NOM NOM Award for Excellence in Open Source"
—
4 hours ago
@fur I just realized you've been on Twitter a long, long time. You've got a lower user id than anyone I know save @walkah...
—
5 hours ago
All cats are dysfunctional. "If you loved me, you would let me sit on your hamburger" implies *unhealthy boundaries*.
—
16 hours ago
Houseplants of Gor
—
The spider plant cringed as its owner brought forth the watering can. "I am a spider plant!" it cried indignantly. "How dare you water me before my time!"
CreepyGif
—
Because the world doesn't have enough animated GIFs of guys driving cat-shaped mopeds.
DinPattern
—
A tidy little collection of tiling patterns for web pages. Time to dig out all my old MacOS desktop patterns...
PSDs to HTML/CSS tutorials
—
Refer to these if I ever decide to start doing design again. Or, buy a template for $15. Decisions, decisions...
Technovelgy
—
Inventions and ideas from science fiction books and movies.
Missing Y/N
Thanks for the diagram. I think the Y/N choices are missing, though.
I tried to add them: you can recover the modified file from [[http://blog.riff.org/files/drupal_get_form.png]], and remove this comment afterwards (but check whether they are in the proper places !).
Updated -- thanks!
Yep, I realized I'd left ouy the y/n notations after posting it, but hadn't had a chance to update it.
A modified version of the chart should be hitting the Drupal.org handbook soon.
Using Drupal_get_form to return data?
I don't understand why the only options are to return the original form or do a redirect. How does one return data retrieved from a form query (i.e., use a form to do a search on content and return the results)?
For example, given a form that calls the following _submit function, how does one display the returned data?
function listing_basic_form_submit($form_id,$form_values) {
db_set_active('housing');
$city = $form_values['basic']['city'];
$low = $form_values['basic']['low'];
$high = $form_values['basic']['high'];
$sql_cnt = "SELECT COUNT(DISTINCT(id)) from residential where city='$city' AND low=$low AND high=$high";
$result = pager_query(db_rewrite_sql("SELECT id,city,ListPrice,area from residential where city='$city' AND low=$low AND high=$high"), 5,0,$sql_cnt);
db_set_active('default');
return $result;
}
#multistep
This is were the #multistep mode for drupal's form handling comes in. To do what you're looking for, you would want to turn it into a #multistep form, turn #redirect off, and put the display of the search results into the form handling code itself. Check out this article on Lullabot.com for a very simple example.
Thanks
Hey, that was really helpful. Thank you. Am I wrong in thinking that this was more difficult to do in DP 4.7 and earlier versions?
Nope, you're correct
It was indeed more difficult. It's certainly far from perfect now, but we're making iterative improvements...
Previous comment roughly
Previous comment roughly translates as "Is your hovercraft full of eels?"
Post new comment