OK I have reproduced your code on my machine. I blanked out the First name and pressed Submit. Then I did File .. View Source There I can see that it generates <div class="error" id="testfield1__error">cannot be empty!</div>
So we 'simply' have to scour the web2py source code to look for where the CRUD and or FORM framework code generates a <div class="error" ... Then we need to figure out what it needs to make that happen.. On May 3, 2:51 pm, Gary <[email protected]> wrote: > Thanks to all for your input and suggestions. I've tried to make the > changes without effecting the functionality or the goal of using the > 'crud' controllers. > > Massimo - I'll repost the application with the changes below. > > Alvaro - I've considered abandoning the use of the crud controllers > and use 'form', but I've gone this far and it has become a challenge, > plus I hope to add to the knowledge base about the use of the crud > code. > > dlypka - I've taken your suggestion and (essentially) copied the code > from the {{=form}} to be as sure as I could to duplicate the layout > > John - I've incorporated the form.custom.inpval. When I looked at > what was generated by {{=form}} it didn't seem to need the form > action. I may be missing something, but everything works except the > response.error display, so I'm a little confused. Massimo has asked > to see the updated version of the code, so I'll let him take a look > before I add too much more. > > Here is the MVC. The view contains both custom code and {{=form}}. > It doesn't make any difference which input fields or submit button is > used, the data is handled properly. The problem is, if you leave > 'testfield1' blank, only the {{=form}} version displays the 'cannot be > empty' message. The error is not displayed in the custom form. The > code for the labels and fields are copied directly from the {{=form}} > source of the page and modified to display the > form.custom.inpval.fieldname variables. > > 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 > auth=Auth(globals(),db) # authentication/ > authorization > auth.define_tables() # creates all needed > tables > crud=Crud(globals(),db) # for CRUD helpers using > auth > crud.settings.update_next = URL(r=request, f='index') > > Controller > ------------ > def index(): > session.action = "" > redirect(URL(r=request,f='testdata')) > > @auth.requires_login() > def testdata(): > setsubmit() > if request.args: id = request.args[0] > else: id = 3 # Included for testing > if session.action == "create": > return dict(form=crud.create(db.testtable)) > elif session.action == "update": > return dict(form=crud.update(db.testtable,id)) > else: > return dict(form=crud.read(db.testtable,id)) > > def setsubmit(): > if request.vars.submit1: session.action = "create" > if request.vars.submit2: session.action = "update" > if request.vars.submit3: session.action = "" > > def data(): > response.view="%s/%s/%s.html" % > (request.controller,request.function, request.args[0]) > return dict(form=crud()) > > def user(): > return dict(form=auth()) > > Views > ------ > ( The following is default/testdata.html ) > > {{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 in ["update","create"]:}} > <td><input class="string" id="testtable_testfield1" > name="testfield1" type="text" > value="{{=form.custom.inpval.testfield1}}" /></td> > {{else:}} > <td>{{=form.custom.inpval.testfield1}}</td> > {{pass}} > <td></td> > </tr> > <tr> > <td><label >Testfield2:</label></td> > {{if session.action in ["update","create"]:}} > <td><input class="string" id="testtable_testfield2" > name="testfield2" type="text" > value="{{=form.custom.inpval.testfield2}}" /></td> > {{else:}} > <td>{{=form.custom.inpval.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'}} > > ( The following is buttons.html) > > <br /> > {{if session.action in ["update","create"]:}} > <input type="submit" name="submit" value="Submit" /> > <input type="submit" name="submit3" value="Cancel" /> > {{else:}} > <input type="submit" name="submit1" > value=" Add " /> > <input type="submit" name="submit2" value="Update" /> > <input type="submit" name="submit3" value="Cancel" /> > {{pass}} > {{=form.hidden_fields()}} > > ++++++++++++++ End of MVC ++++++++++++++++++++ > > Thanks again to all. > > Regards, > Gary --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---

