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
-~----------~----~----~----~------~----~------~--~---

Reply via email to