Yes. There would be no error dislayed. The errors are in the dict
form.errors so you can insert things like

{{if form.errors.has_key('name'):}}Ops, error:{{=form.vars.name}}
{{pass}}

Massimo

On Oct 10, 10:20 am, "José Deodoro de Oliveira Filho"
<[EMAIL PROTECTED]> wrote:
> Sorry,
>
> I mean I built a form, like Bill, manually:
>
> >> >> <form name="{{=form.formname}}" method="post"
> >> >> action="controller_name">
> >> >> <input type="hidden" name="id" value="{{=form.record.id}}">
>
> >> >> <label>Name:</label><input type="text" name="{{=form.formname}}_name"
> >> >> size="50" maxlength="50" value="{{=form.record.name}}"/>
> >> >> etc.
>
> And the drawback is that I miss the error divs generated by the
> validators (which are a big plus), so I'd better stick to doing form =
> SQLFORM(...) and passing it along to the view ({{=form}}). Am I
> thinking correctly ?
>
> Deodoro Filho
>
> On Fri, Oct 10, 2008 at 12:09 PM, mdipierro <[EMAIL PROTECTED]> wrote:
>
> > I do not understand what you mean. could you provide an examle?
>
> > On Oct 10, 9:35 am, "José Deodoro de Oliveira Filho"
> > <[EMAIL PROTECTED]> wrote:
> >> Just out of curiosity: I've gone that way and what I noticed is that I
> >> loose the error divs, then I went back to using {{=form}}. Is that
> >> correct ?
>
> >> Deodoro Filho
>
> >> On Fri, Oct 10, 2008 at 11:28 AM, mdipierro <[EMAIL PROTECTED]> wrote:
>
> >> > OK just replace
>
> >> > recipe=recipes[0]
>
> >> > with
>
> >> > recipe=recipes[0] if recipes else None
>
> >> > On Oct 10, 5:57 am, billf <[EMAIL PROTECTED]> wrote:
> >> >> I have gone down the route of using the following controller code
> >> >> (I've left out a few checks for simplicity)
>
> >> >> recipes=db(db.recipe.id==id).select()
> >> >> recipe=recipes[0]
> >> >> form=SQLFORM(db.recipe, recipe)
> >> >> return dict(form=form)
>
> >> >> ... and in the view
>
> >> >> <form name="{{=form.formname}}" method="post"
> >> >> action="controller_name">
> >> >> <input type="hidden" name="id" value="{{=form.record.id}}">
>
> >> >> <label>Name:</label><input type="text" name="{{=form.formname}}_name"
> >> >> size="50" maxlength="50" value="{{=form.record.name}}"/>
> >> >> etc.
>
> >> >> This seems to work well BUT I want to use the same view for insert and
> >> >> update and when inserting there is no record!  It would be great to be
> >> >> able to call a function that creates an recipe record with id=0 and
> >> >> all fields set to default values.  It must be quite simple by
> >> >> iterating through the columns of the table definition but I don't
> >> >> really know enough yet to just code it.  More importantly does the
> >> >> function already exist?  I don't want to rely on cloning an existing
> >> >> instance.
>
> >> >> Bill
>
> >> >> On Oct 10, 5:08 am, mdipierro <[EMAIL PROTECTED]> wrote:
>
> >> >> > form is the form, form[0] is the table inside it. form[0][0] is the
> >> >> > first row. form[0][-1] is the last row, etc.
> >> >> > You can do
>
> >> >> >     form[0].append(TR('Label',TAG.button('whatever'),'comment'))
>
> >> >> > You can add more attributes to your TAG.button
>
> >> >> > On Oct 9, 8:39 pm, Jose de Oliveira Filho <[EMAIL PROTECTED]>
> >> >> > wrote:
>
> >> >> > > Thanks a bunch, Massimo. I completely overlooked the "hidden" thing
> >> >> > > in the FORM source, but the first answer is what I was looking for.
>
> >> >> > > I need to add an extra button to a SQLFORM, like "Save and Add
> >> >> > > another". I could put it outside the form but it looks really bad,
> >> >> > > any recommendations here ?
>
> >> >> > > By the way, did you ever think of turning the SQLFORM generation 
> >> >> > > into
> >> >> > > divs instead of a table ?
>
> >> >> > > Thanks again,
>
> >> >> > > Deodoro Filho
>
> >> >> > > Em 09/10/2008, às 18:04, mdipierro escreveu:
>
> >> >> > > > Good questions. Answers below.
>
> >> >> > > >> (in controller:)
> >> >> > > >> def new_project():
> >> >> > > >>    f = FORM(INPUT(_name = "project_title", _type = "text"))
> >> >> > > >>    if f.accepts(request.vars, session):
> >> >> > > >>       db.project.insert(dict(title = f.vars.title, description =
> >> >> > > >> f.vars.description, user = session.user_id))
> >> >> > > >>       redirect(URL(r = request, f = "list"))
> >> >> > > >>    else:
> >> >> > > >>       return dict(form = f)
>
> >> >> > > >> My question is: is there some way of doing:
> >> >> > > >> ...db.insert.project(f.vars)...
> >> >> > > >> ?
>
> >> >> > > >> I'd be awesome if I could make "user" a hidden field directly.
> >> >> > > >> That'd be like:
>
> >> >> > > >> ...f = SQLFORM(db.project, hidden = [db.project.user])
> >> >> > > >>    f.vars.user = session.user_id...
>
> >> >> > > >> and then remove the db.project.insert line.
>
> >> >> > > > There are many ways you can do it:
>
> >> >> > > > 1) the recommended way
>
> >> >> > > >      # list only the fields you want and pass the others directly 
> >> >> > > > to
> >> >> > > > the vars
> >> >> > > >      f=SQLFORM(db.project,fields=['title'])
> >> >> > > >      f.vars.user=session.user_id
>
> >> >> > > > 2) use a hidden field
>
> >> >> > > > f=SQLFORM(db.project,fields=['title'],hidden=dict
> >> >> > > > (user=session.user_id))
> >> >> > > >      #but now the visitor can tamper with the hidden field in the 
> >> >> > > > form
>
> >> >> > > > 3) Manually using
>
> >> >> > > >     ## vars has to be a dictionary (like form.vars) and must only
> >> >> > > > contain valid fields, not including id.
> >> >> > > >     vars=form.vars
> >> >> > > >     vars.user=session.user_id
> >> >> > > >     db.project.insert(**vars)
> >> >> > > >     ## the ** unpacks the dictionary into named arguments
--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to