So I'm a control-freak. I mean that in a good way. I discovered the
beauty of "placeholders" in forms and just thought "man, I really want
that!" But where to hold the placeholder data? And how do I get it to the
SQLFORM during form creation?
At first I thought about adding YAV (yet another variable) to the Field
class. But it's getting pretty crowded in there already, and mucking with
it means changes to the base, and the devs might object to a
special-purpose hack inserted into Field just to satisfy my whims. So I
thought I'd just create my own formstyle function and use that. But wait!
The formstyle function has a defined signature now, and there is no place
to insert anything like a dictionary of placeholders indeded by field name.
Or is there...
I created my own formstyle function, but added a keyword parameter to the
end for the placeholders dict. The signature looke like this:
def my_fieldstyle(form, fields, placeholders=None):
...blah...
Now, the code in SQLFORM still has no idea that these placeholders exist.
But I can "wrap" this function with either a "partial function" or a
simple lambda to provide my own dictionary just before the customized
formstyle function is handed off to SQLFORM for it's main job. It looks
like this:
my_placeholder_dict = {'field1': 'place1', 'field2', 'place2'...}
...
styler = lambda form, fields: my_fieldstyle(form, fields,
placeholders=my_placeholder_dict)
...
form = SQLFORM(... formstyle=styler ...)
That's all there is to it! Now I can pass abundant information into the
SQLFORM created, info that the base form creation has no idea exists. My
own custom formstyle class can interpret the extra information and add all
kinds of special features. Just a few ideas:
1. Provide "placehloders" for phone and date fields to show proper format
2. Provide dictionary of "field sets" with "legends" and create a
structured form organized the way I want
3. ... and many many more!
Best of all, it only needs stupid Python tricks and doesn't much with the
underlying structure of web2py at all! No nasty stares from the devs!
(Just kidding...)
-- Joe
--
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.