Can you email me the code below? the indentation is messed up. Massimo
On Dec 28, 9:53 am, rfx_labs <l...@reproflex.de> wrote: > Some treads here disus the handling of custom forms. > > One hint was use SQLFORM in the controller and build anything else in > the view. > > I don't like the idea to do things twice. > > Another hint was {{=form[0][1][1][0]}}. > Not so handy and may break when fields are added to the table. > So i wrapped this in an function. Now I have both quick SQLForms for > development and all posiilites for make my one styled forms. > > In a Form I can now do: > <ol> > {{=LI(form.elm("name"))}} > {{=LI(form.elm("match"))}} > </ol> > rendert as: > <li><label for="name">Name: </label><input class="string" id="name" > name="name" type="text" value="" /></li> > <li><label for="match">Match: </label><select class="reference match" > id="match" name="match"><option value="1">xyz</option></select></li> > > or: > {{=form.elm("reference", _type="hidden")}} > {{=form.elm("id")}}{{=form.hidden_fields()}} > rendert as: > <input class="reference reference" id="reference" name="reference" > type="hidden" value="" /> > <input name="_formkey" type="hidden" value="be9653b2-73ab-459b-b63d- > e3831198da3b" /><input name="_formname" type="hidden" value="color" /> > > or: > {{for elm in "cmyk":}} > {{=LI(form.elm(elm, SPAN(elm.capitalize()+": ", > _id="color_"+elm) ) )}} > {{pass}} > rendered as: > <li><label for="c"><span id="color_c">C: </span></label><input > class="integer" id="c" name="c" type="text" value="0" /></li> > <li><label for="m"><span id="color_m">M: </span></label><input > class="integer" id="m" name="m" type="text" value="0" /></li> > <li><label for="y"><span id="color_y">Y: </span></label><input > class="integer" id="y" name="y" type="text" value="0" /></li> > <li><label for="k"><span id="color_k">K: </span></label><input > class="integer" id="k" name="k" type="text" value="0" /></li> > > Any suggestions are welcome. > > Martin > > Here's the code that I put in a model: > #patch SQLFORM > def __elm(self, elm, label=True, _id=True, **kargs): > > if elm is "id": > #why is id not in form.hidden_fields()? > return self.components[1] if len(self.components) > 1 else "" > elif elm is "delete": > fid = -2 > else: > fid = self.fields.index(elm)-1 > if fid < 0: raise SyntaxError, "Field not in Form!" > > field = self.components[0][fid][1][0] > > if elm is "delete" and field.attributes["_id"] is not > "delete_record": return "" > > if _id is True and "_name" in field.attributes: > #name as id, this is maybe a little to specific for only me > field.attributes["_id"] = field.attributes["_name"] > elif type(_id) is str: > #custom id > field.attributes["_id"] = _id > > for key in kargs.keys(): > field.attributes[key] = kargs[key] > > if "_type" in field.attributes.keys() \ > and field.attributes["_type"] is "hidden": > label=False > > if label: > lb = self.components[0][fid][0][0] > > if _id is True and "_id" in field.attributes: > lb.attributes["_for"] = field.attributes["_id"] > elif type(_id) is str: > lb.attributes["_for"] = _id > > lb.attributes["_id"] = None > > if label is not True: > lb.components[0] = XML(label) > > field = XML(lb.xml() + field.xml()) > > return field > > SQLFORM.elm = __elm --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py Web Framework" group. To post to this group, send email to web2py@googlegroups.com To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---