Hmm, I was planning to use keepvalues for the following scenarios:
* Scenario1 - submitted form returns with errors, and still displays
the form with the submitted values
* Scenario2 - submit form successfully, and still display the form
with the submitted values
You mention that the keepvalues should work fine for Scenario2. I did
not see that happen, hence the initial report. It doesn't retain the
values in Scenario1, with or without keepvalues.
I suspect this is because I was always, for example, setting
form.custom.inpval['country'] to the country field; and this always gets
the data from the database(?). My controller code is below.
Can you please elaborate how I can do this "so your custom widget should
be able to retain the value if desired (without using request.vars)".
Currently, am using the <code>request.vars.country or
form.custom.inpval['country']</code> option to display the values in the
field.
________________________________________
Kiran Subbaraman
http://subbaraman.wordpress.com/about/
On Tue, 14-01-2014 11:04 PM, Anthony wrote:
keepvalues is for retaining values when there are no errors (but you
want to retain the values from the previous submission). If there are
errors, the values will be retained regardless of keepvalues. In your
case, you are not using form.custom.widget, so you're not getting the
values retained. If you create custom widgets, though, the field and
value will get passed to the widget, so your custom widget should be
able to retain the value if desired (without using request.vars).
Anthony
On Tuesday, January 14, 2014 11:52:54 AM UTC-5, Kiran Subbaraman wrote:
Anthony,
Thanks for the link; that is useful. Also, was looking at the
implementation of the default widgets in
https://github.com/web2py/web2py/blob/master/gluon/sqlhtml.py
<https://github.com/web2py/web2py/blob/master/gluon/sqlhtml.py>.
I think I can conclude that keepvalues does not retain values, as
detailed in this email.
Considering that I have to check for request.vars and then the
form.custom.* to assign values to be displayed, it makes sense to
encapsulate this amount of code in a helper function, or even a
widget. I intend to do just that.
Thanks,
Kiran
________________________________________
Kiran Subbaraman
http://subbaraman.wordpress.com/about/
<http://subbaraman.wordpress.com/about/>
On 1/14/2014 8:46 PM, Anthony wrote:
Some instruction about creating custom widgets at the end of this
section:
http://web2py.com/books/default/chapter/29/07/forms-and-validators#Widgets
<http://web2py.com/books/default/chapter/29/07/forms-and-validators#Widgets>.
On Tuesday, January 14, 2014 12:33:22 AM UTC-5, Kiran Subbaraman
wrote:
Yes, that works: use request.vars.*. That was the option
which I had mentioned I may need to resort to, since
*keepvalues *doesn't seem to work for me.
This basically comes down to me creating a bunch of widgets;
mirroring the ones in web2py, where a widget would have
logic, similar to the one below, in it.
I need to figure out how to create a widget now. Am familiar
with creating jsp tag libraries, and dojo widgets.
|
<input type="text" class="form-control
{{if
form.errors.country:}}invalidinput{{pass}}"
id="country" name="country"
value="{{=request.vars.country or
form.custom.inpval['country']}}"
placeholder=|"{{=form.custom.comment['country']}}"
|
|
Thanks for your inputs,
Kiran
________________________________________
Kiran Subbaraman
http://subbaraman.wordpress.com/about/
<http://subbaraman.wordpress.com/about/>
On 1/14/2014 1:23 AM, Massimo Di Pierro wrote:
Strange. How about
{{=request.vars.country or form.custom.inpval['country']}}
On Monday, 13 January 2014 11:13:33 UTC-6,
subbaram...@gmail.com wrote:
Massimo,
Yes, I did. Does not make a difference.
Thanks for the suggestion,
Kiran
On Monday, January 13, 2014 7:49:15 PM UTC+5:30, Massimo
Di Pierro wrote:
Have you tried replacing
value="{{=form.custom.inpval['country']}}"
with
value="{{=form.custom.dspval['country']}}"
On Sunday, 12 January 2014 22:50:43 UTC-6,
subbaram...@gmail.com wrote:
Really would like some help with this. Anyone
have suggestions?
Thank you,
Kiran
On Saturday, January 11, 2014 12:10:07 AM
UTC+5:30, subbaram...@gmail.com wrote:
Hello All,
The *design *is: I have a custom form with
the a controller that inserts/updates a
table. Tthe form accepts data, and on
successful submission of this form, it stays
on the same page (there are no redirects to
another page or form)
*Issue*: The problem am seeing is, when I
update values in the form, and submit it,
the entered values are lost when the form
returns because of successful submit, or due
to errors. I have tried to use
keepvalues=True in the form.accepts() and
form.process() methods. No luck.
Details below.
Since the page am building has specific
design needs, I went with the option of a
custom form, where I used the form.custom.*
options quite a bit. Therefore input fields
in the form look like this
|
<input type="text" class="form-control
{{if
form.errors.country:}}invalidinput{{pass}}"
id="country" name="country"
value="{{=form.custom.inpval['country']}}"
placeholder=|"{{=form.custom.comment['country']}}"
|
|
Also the controller is coded as below
|
x =db(db.x.x_id
==auth.user.id).select().first()
ifx:
form =SQLFORM(db.x,record=x)
else:
form =SQLFORM(db.x)
pass
# process the form
ifform.accepts(request.vars,formname='basicinfo_form',keepvalues=True):
response.flash ='Basic Information
updated successfully.'
elifform.errors:
response.flash ='The submitted form
contains errors. The fields in error are
highlighted below.'
else:
response.flash ='Please fill the form.'
pass
returndict(form=form)
|
I was thinking that maybe I should capture
the request.vars and send it back to the
view alongwith the form.
If the request.vars.country value exists,
then I use that, instead of the
form.custom.inpval['country']. This only
makes the view code a bit more verbose, but
if it solves the problem, then nothing like it.
Can anyone suggest what I could do to sort
this out?
Thank you,
Kiran
P.S: I did take a look at all the
conversations in the forum about keepvalues.
None of them seemed to help me. Though I did
find this one to be interesting and am
curious if this is sorted out already:
https://groups.google.com/forum/#!searchin/web2py/keepvalues$20on$20validate/web2py/MNEYo96Shzg/jjKZaMmfAgQJ
<https://groups.google.com/forum/#%21searchin/web2py/keepvalues$20on$20validate/web2py/MNEYo96Shzg/jjKZaMmfAgQJ>
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py
<http://github.com/web2py/web2py> (Source code)
- https://code.google.com/p/web2py/issues/list
<https://code.google.com/p/web2py/issues/list> (Report Issues)
---
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 web2py+un...@googlegroups.com.
For more options, visit
https://groups.google.com/groups/opt_out
<https://groups.google.com/groups/opt_out>.
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py
<http://github.com/web2py/web2py> (Source code)
- https://code.google.com/p/web2py/issues/list
<https://code.google.com/p/web2py/issues/list> (Report Issues)
---
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 web2py+un...@googlegroups.com <javascript:>.
For more options, visit https://groups.google.com/groups/opt_out
<https://groups.google.com/groups/opt_out>.
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.