I think this is not really what you want, but could help: you can
validate data (using validators) if you use helpers to create your
forms. Creating forms with helpers is more flexible than with Crud.
Try something like this:
def test():
f = FORM('Is web2py cool? Why?',
SELECT(OPTION('Yes', _value='y'), OPTION('No',
_value='n'), _name='opts', requires=IS_IN_SET(['y'],
error_message='Errr...wrong answer')),
INPUT(_type='text', _name='why', _value="'cause python
rules", requires=IS_NOT_EMPTY()),
INPUT(_type='submit', _name='btnSubmit', _value='ok'))
if f.accepts(request.vars):
response.flash = 'form accepted'
elif request.vars.btnSubmit:
response.flash = 'error in form'
return dict(myform=f, v=request.vars)
You can create the layout in HTML and elements in controller (INPUT,
SELECT etc.) and then put them in HTML with {{=varname}}.
On Sat, May 2, 2009 at 2:37 PM, Gary <[email protected]> wrote:
>
> The following MVC is used to create/update/read a single table. The
> validation for not empty works with the {{=form}} but not the custom
> HTML. Both versions are displayed in the same form and the data is
> changed and validated via either submit button, but the error message
> is only displayed in the top, standard form.
>
> Can anyone see what is causing the different behavior?
>
> Thanks
>
> Model
> -------
> try:
> from gluon.contrib.gql import * # if running on Google App Engine
> except:
> db = SQLDB('sqlite://storage.db') # if not, use SQLite or other
> DB
> else:
> db = GQLDB() # connect to Google BigTable
> session.connect(request, response, db=db) # and store sessions
> there
> ##
> db.define_table('testtable',SQLField('testfield1','string'),SQLField
> ('testfield2','string'))
> db.testtable.testfield1.requires=IS_NOT_EMPTY()
>
> from gluon.tools import Mail, Auth, Crud # new in web2py 1.56
> crud=Crud(globals(),db) # for CRUD helpers using
> auth
> crud.settings.update_next = URL(r=request, f='index')
>
> Controller
> ------------
> def index():
> session.action = "update"
> redirect(URL(r=request,f='testdata',args=["3"]))
>
> def testdata():
> if request.vars.submit1: session.action = "create"
> if request.vars.submit2: session.action = "update"
> if request.vars.submit3: session.action = ""
> if session.action == "create":
> return dict(form=crud.create(db.testtable))
> elif session.action == "update":
> id=request.args[0]
> return dict(form=crud.update(db.testtable,id))
> else:
> id=request.args[0]
> return dict(form=crud.read(db.testtable,id))
>
> def data():
> response.view="%s/%s/%s.html" %
> (request.controller,request.function, request.args[0])
> return dict(form=crud())
>
> View (default/testdata)
> -----------------------------
> {{extend 'layout.html'}}
> <h1>Testdata
> {{if session.action == "update":}}
> Update
> {{elif session.action == "create":}}
> Add
> {{pass}}
> </h1>
> {{=form}}
> =========================================
> <form action="" enctype="multipart/form-data" method="post">
> <table>
> <tr id="testtable_testfield1__row">
> <td><label for="testtable_testfield1"
> id="testtable_testfield1__label">Testfield1: </label></td>
> {{if session.action == "update":}}
> <td><input class="string" id="testtable_testfield1"
> name="testfield1" type="text" value="{{=form.record.testfield1}}" /></
> td>
> {{elif session.action == "create":}}
> <td><input class="string" id="testtable_testfield1"
> name="testfield1" type="text" value="" /></td>
> {{else:}}
> <td>{{=form.record.testfield1}}</td>
> {{pass}}
> <td></td>
> </tr>
> <tr>
> <td><label >Testfield2:</label></td>
> {{if session.action == "update":}}
> <td><input class="string" name="testfield2" type="text"
> value="{{=form.record.testfield2}}" /></td>
> {{elif session.action == "create":}}
> <td><input class="string" id="testtable_testfield1"
> name="testfield2" type="text" value="" /></td>
> {{else:}}
> <td>{{=form.record.testfield2}}</td>
> {{pass}}
> <td></td>
> </tr>
> {{if session.action == "update":}}
> <tr id="delete_record__row">
> <td><label for="delete_record" id="delete_record__label">Check to
> delete:</label></td>
> <td><input class="delete" id="delete_record"
> name="delete_this_record" type="checkbox" value="on" /></td>
> <td></td>
> </tr>
> {{pass}}
> </table>
> {{include 'buttons.html'}}
> </form>
>
> >
>
--
Álvaro Justen
Peta5 - Telecomunicações e Software Livre
21 3021-6001 / 9898-0141
http://www.peta5.com.br/
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"web2py Web Framework" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---