The fact is that you know more about web2py and details than me :-)
I learned about form.custom after I had done my function and used it in my
views. But even then I didn't know about the split form.custom.end[1] to
get hidden fields.
By the way I do not think it is in the book, you may add it.
http://web2py.com/books/default/chapter/29/7#Custom-forms
Thank you for teaching us ;-)
Le samedi 5 mai 2012 15:30:22 UTC+2, Massimo Di Pierro a écrit :
>
> I do not understand the purpose of all this. Why not:
>
>
> {{=form.custom.begin}}
> {{#<!-- Add header here -->}}
> {{=form.element['table']}}
> {{#<!-- Add footer here -->}}
> {{=DIV(form.custom.end[1] # hidden field}}
> {{#<!-- Add submit/cancel buttons here - you may even not use the submit
> variable -->}}
> {{=INPUT('extra button'}}
> {{=form.custom.end[0] # </form>}}
>
>
> Notice there is also a form.add_button(....) in trunk.
>
> On Saturday, 5 May 2012 00:49:38 UTC-5, Cédric Mayer wrote:
>>
>> As I needed to build my own submit buttons, or add my own widgets, I use
>> the following function to split a SQLFORM:
>> import re
>>
>> def expurgate_form(web2py_form):
>> '''
>> Deletes surrounding <form> tag, and submit row.
>> '''
>> regexp_opening_tag = re.compile("^<[^><]*>")
>> regexp_closing_tag = re.compile("<[^><]*>$")
>> form_xml = web2py_form.xml()
>> opening_tag = regexp_opening_tag.search(form_xml).group()
>> closing_tag = regexp_closing_tag.search(form_xml).group()
>> realform=TAG(form_xml)
>> table = realform.elements('table')[0]
>> hidden_elements = realform.elements("input[type=hidden]")
>> hidden_element = DIV(*hidden_elements)
>> hidden_element['_style'] = "display:none;"
>> todelete = table.elements("input[type=submit]")
>> submit = todelete[0]
>> todelete[0].parent[0]=''
>> return (table,hidden_element,XML(opening_tag),XML(closing_tag),submit
>> )
>>
>>
>> To use it in a view:
>> {{(table,hidden_element,opening_tag,closing_tag,submit)=expurgate_form(
>> form)}}
>> {{=opening_tag}}
>> {{#<!-- Add header here -->}}
>> {{=table}}
>> {{#<!-- Add footer here -->}}
>> {{=hidden_element}}
>> {{#<!-- Add submit/cancel buttons here - you may even not use the submit
>> variable -->}}
>> {{=submit}}
>> {{=closing_tag}}
>>
>>
>> I hope it will help :-)
>>
>>
>> Le vendredi 4 mai 2012 08:30:23 UTC+2, Annet a écrit :
>>>
>>> I'd like to divide the default/user.html forms into a body and footer
>>> part, the body containing the fields the footer containing the cancel and
>>> submit button, something like this:
>>>
>>> <div class="form">
>>> <div class="form-header">
>>> <h3>Login with your Leonexus ID</h3>
>>> </div> <!-- /form-header -->
>>> <div class="form-body">
>>> <h5>Enter your username and password</h5>
>>>
>>> the form fields here
>>>
>>> </div> <!-- /form-body -->
>>> <div class="form-footer">
>>>
>>> the form controls here
>>>
>>> </div> <!-- /form-footer -->
>>> </div> <!-- /form -->
>>>
>>> Is there a way to split the form in these components?
>>>
>>>
>>> Kind regards,
>>>
>>> Annet
>>>
>>