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="&nbsp;&nbsp;Add&nbsp;&nbsp;&nbsp;" />
>     <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
-~----------~----~----~----~------~----~------~--~---

Reply via email to