[Zope] Formulator - Database Edit form (solved)

Lee.Marzke@ametek.com Lee.Marzke@ametek.com
Mon, 4 Mar 2002 18:13:04 -0500


RE:  Setting up initial values on a formulator form from the contents of 
the DB.
( For a DB edit form )

I've found the solution by looking though the Formulator source.

The following is a slight change to the index_html method in the 
Formulator HOWTO
( automatic method) .   This form fills in the value of the fields with 
the current values
of the DB. 

 A ZSQL method is assumed to have been called prior to accessing this form
by using direct traversal as explained by my last message.

Hope this helps someone out, as I couldn't find the answer anywhere.

Lee Marzke  <lee.marzke@ametek.com>

====

<dtml-var standard_html_header>

<dtml-var "form.header()">
<dtml-let me="this()">

<table border="0" width="50%">
  <dtml-in "form.get_groups()">
  <dtml-let group=sequence-item>
    <tr><th colspan="2" bgcolor="#F8F8F8"><dtml-var group></th></tr>
    <tr>
      <dtml-in "form.get_fields_in_group(group)">
      <dtml-let field=sequence-item>
        <tr>
          <td><dtml-var "field.get_value('title')"></td>
          <td><dtml-if "_.getattr(me, field.id)">
                <dtml-var "field.render(_.getattr(me, field.id))">
              <dtml-else>
                 <dtml-var "field.render()">
              </dtml-if>
          </td>
        </tr>
      </dtml-let>
      </dtml-in>
    </tr>
  </dtml-let>
  </dtml-in>
  <tr>
    <td><input type="submit" value=" OK "></td>
  </tr>
</table>

</dtml-let>

<dtml-var "form.footer()">
<dtml-var standard_html_footer>


============================================================
I'm following the recommendations on using Formulator forms and info in 
the Book of Zope
and not having much luck translating the Add form ( which works great ) 
into an Edit form
that must be filled in with existing values.

My list method uses direct traversal to an zsql method, and I want to add 
an additional
path to the Formulator form which will pre-fill in the values

For instance, each item is listed with a link to the edit form like

[ <a href="<dtml-var URL1>/user_by_id/&dtml-userid;/forms/userEdit/"> Edit 

</a>

Where the user_by_id is a zsql method with direct traversal enabled.

I added the "field.render(field[field.getId()], REQUEST)  as suggested
by some archived email message but I get the error.

Error Type: AttributeError
          Error Value: __getitem__

When clicking the edit link.

Any suggestions or examples on how to get formulator ( or forms in
general ) to work with zsql would be appreciated.