[Zope] Using Form data values in ZSQL Method: I must be missing something here

Howard Hansen zope@halfmagic.com
Tue, 19 Feb 2002 10:19:25 -0800


Thanks Eric (and Neil), passing REQUEST to zsql_method works.

Here's what I had to do to get it working:

    zsql_method gets a parameter named request.

    Call the query with <dtml-call "zsql_method(request=REQUEST)">

    Inside the zsql_method, get the form values out with calls like this:

    <dtml-sqlvar "request.field_companyname" type=string>
        or
    <dtml-sqlvar "request['field_companyname']" type=string>

I'm still confused about my confusion.  It looks to me like the zsql_method
has its own REQUEST and thus doesn't try to find the values in the calling
object.  I find it odd that I haven't seen any discussion of this issue in
any of the books/documentation I've run across.  But when acquisition does
work inside ZSQL Methods, it's very cool!

Thanks for the help!

Howard Hansen
http://howard.editthispage.com

----- Original Message -----
From: "Eric Walstad" <eric@ericwalstad.com>
To: "Howard Hansen" <zope@halfmagic.com>
Cc: <zope@zope.org>
Sent: Monday, February 18, 2002 10:21 PM
Subject: Re: [Zope] Using Form data values in ZSQL Method: I must be missing
something here


> Hi Howard.
>
> It looks like your ZSQL method is not getting the form data it needs.
> Like you mentioned, you could pass those parameters explicitly when you
> call the the ZSQL method, or you could pass the REQUEST object to the
> ZSQL method:
>
> <dtml-call "zsql_method(companyname=companyname,
> companyphone=companyphone, etc to the 29th parameter)">
> or
> <dtml-call "zsql_method(REQUEST)">
> Hey, you may want to try something like this - It might work and would
> not have to pass so much stuff to the ZSQL method:
> <dtml-call "zsql_method(form)">
>
> I'm guessing it's more efficient to pass just the parameters the ZSQL
> method will need, but it is a pain to pass all 29 of them!
>
> I hope that helps,
>
> Eric.
>
> Howard Hansen wrote:
> > I'm certain that I'm doing something very silly here, and I've learned
many
> > new things about Zope and databases by researching this problem, but I
> > haven't figured out how to make it work.
> >
> > All I want to do is create forms that allow me to insert or update
records
> > in a database.
> >
> > Here's the structure I've set up:
> >
> >     form: collects the form data, and when the user clicks submit, it
calls:
> >     action_dtml_method: which calls:
> >          zsql_method, which modifies the database
> >          and tells the user what just happened
> >
> > When I hit Submit, I can easily list the values from the form inside the
> > action_dtml_method, but zsql_method acts like it has no clue about the
form
> > values.  It gives me the error:
> >
> >     Missing input variable, field_companyname