Sorry for being so long winded.
I've been trying to implement a custom html form using the crud
applications as explained above, but I'm having difficulty using
custom html.  Here is the test MVC that I've created for the purpose
of understanding the concepts:

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'))

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():
    redirect(URL(r=request,f='testupdate',args=["1"]))

def testupdate():
    id=request.args[0]
    return dict(form=crud.update(db.testtable,id))

def data():
    response.view="%s/%s/%s.html" %
(request.controller,request.function, request.args[0])
    return dict(form=crud())

=======

View (default/testupdate.html)

{{extend 'layout.html'}}
<h1>This is the default/testupdate.html template</h1>

<!-- Try the form (Works)-->
{{=form}}

<!--Try individual form fields (Submit doesn't work)-->
{{for field in form:}}
{{=field}}
{{pass}}

<!-- Try the form by duplicating form output (Submit doesn't work)-->
<table>
<tr id="testtable_testfield1__row">
    <td><label for="testtable_testfield1"
id="testtable_testfield1__label">Testfield1: </label></td>
    <td><input class="string" id="testtable_testfield1"
name="testfield1" type="text" value="testdata1" /></td>
    <td></td>
</tr>
<tr id="testtable_testfield2__row">
    <td><label for="testtable_testfield2"
id="testtable_testfield2__label">Testfield2: </label></td>
    <td><input class="string" id="testtable_testfield2"
name="testfield2" type="text" value="testdata2" /></td>
    <td></td>
</tr>
<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><tr id="submit_record__row"><td></td><td><input
type="submit" value="Submit" /></td>
    <td></td>
</tr>
</table>
<div class="hidden"><input name="_next" type="hidden" value="http://
localhost:8001/test/default/testupdate/1" />
    <input name="id" type="hidden" value="1" />
    <input name="_formkey" type="hidden" value="b7418550-1b4a-434b-
bdc1-84a24e904582" />
    <input name="_formname" type="hidden" value="testtable_1" />
</div>
</form>

========

It's obvious that the hidden field 'formname' is required and changes
with each submission.  I assume that there is a value that can be
inserted there to fix that problem, but is this the best/only way to
gain full control of the display of a crud application?  Any insight
will be greatly appreciated.

Thanks,
Gary

====================================================================
====================================================================



On Apr 27, 6:31 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
> when you call crud you can also specify lots of options...
>
> def mycreate():
>     return dict(form=crud.create(db.mytable,next=URL
> (...),onaccept=lambda form:pass,onvalidation=lambda form: pass))
>
> and more. You can also embed them in views
>
>    {{=crud.create(db.mytable)}}
>
> Massimo
>
> On Apr 27, 5:23 pm, Gary <gary.k.ma...@gmail.com> wrote:
>
> > Massimo,
>
> > Thank you, Thank you, Thank you!   This clarified so much and makes a
> > great deal of sense.
>
> > Kindest regards,
> > Gary
>
> > On Apr 27, 5:48 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > > On Apr 27, 3:14 pm, Gary <gary.k.ma...@gmail.com> wrote:
>
> > > > Like myapp/default/display_manual_form() in the book, right?
>
> > > > Two questions.  I assume that I need a:
>
> > > > def data(): return dict(form=crud())
>
> > > > for each table that uses the crud controller to properly define the
> > > > URL.  If that's true, it's the part that I missed.
>
> > > No. This controller will work for every table in the database. In
> > > fact, as you do below, you specify the table in the URL
>
> > > > 1)http://hostname/myapp/default/data/update/person/2
>
> > > You create a CRUD action per table
>
> > > def mycreate():
> > >     return dict(form=crud.create(db.mytable))
>
> > > or an update action
>
> > > def myupdate():
> > >     id=request.args[0]
> > >     return dict(form=crud.update(db.mytable,id))
>
> > > > or create a controller like:
>
> > > > 2) def update1():
> > > >       redirect(URL(r=request,f='data/update/person/2'))
>
> > > Do do not do actions that just redirect.
>
> > > > In either case, what should the view be named?
>
> > > the view is the controller/action.html
>
> > > > Since one might want
> > > > to have a different view for read,update,delete,etc., it seems that it
> > > > should be:
>
> > > > default/data/update.html, but my testing seems to work at default/
> > > > data.html.
>
> > > you can do
>
> > > def data():
> > >     response.view="%s/%s/%s.html" % (request.controller,
> > > request.function, request.args[0])
> > >     return dict(form=crud())
>
> > > > That seems to imply that using method #2 above with a response.view()
> > > > would be the better solution.  Would you agree with that conclusion or
> > > > is there a better way to handle this?
>
> > > > Thank you.
> > > > Gary
>
> > > > On Apr 26, 9:22 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > > > > Yes, you can make the form in html as usual for SQLFORM.
>
> > > > > On 26 Apr, 18:37, Gary <gary.k.ma...@gmail.com> wrote:
>
> > > > > > Is there a simple way to replace the automatically generated SQLFORM
> > > > > > in the various crud controllers with a custom SQLFORM?
>
> > > > > > Thanks.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to