Miya,
It can be done like this:
if tg_errors:
cherrypy.request.validated_form = form
Just put the above in your error handling controller method, which
should be the same method that defines and creates the form.
Regards,
Aaron
miya wrote:
>
>
> On Nov 14, 10:42 am, Alberto Valverde <[EMAIL PROTECTED]> wrote:
>> On Nov 14, 2006, at 1:49 PM, miya wrote:
>>
>>
>>
>>
>>
>>> Is there another way to validate a TableForm Widget without
>>> declaring/defining it structure outside the Root class (or any class
>>> for that matter) ?
>>> -------------------------
>>> For example:
>>> (Fromhttp://docs.turbogears.org/1.0/ErrorHandling)
>>> from turbogears import controllers, expose, redirect
>>> from turbogears import validate, validators as v
>>> from turbogears import error_handler
>>> from turbogears import widgets as w
>>> number_form = w.ListForm(
>>> fields = [
>>> w.TextField(
>>> name="number",
>>> label="Enter a Number",
>>> validator=v.Int(not_empty=True))
>>> ],
>>> submit_text = "Submit Number!"
>>> )
>>> ## This is what the template looks like
>>> # <html xmlns:py="http://purl.org/kid/ns#">
>>> # <body>
>>> # <h1>This is a Form Page!</h1>
>>> # ${form(value_of('data',None), action=action, method="POST")}
>>> # </body>
>>> # </html>
>>> class Root(controllers.RootController):
>>> @expose(template=".templates.welcome")
>>> def index(self,number=-1,tg_errors=None):
>>> return dict(data={'number':number},
>>> form=number_form,
>>> action="/validated_number")
>>> @expose()
>>> @error_handler(index)
>>> @validate(form=number_form)
>>> def validated_number(self, number=2):
>>> return dict(valid_number=number)
>>> -------------------------
>>> Here number_form is declared/defined outside the Root class. Wouldn't
>>> it be great if its defined inside the index method? I know that if
>>> I do
>>> that, the @validate decorator tag can't find the number_form. So, is
>>> there another way to do this? Because I just can't imagine to declare
>>> and define every and each one of my forms outside the Root (or any )
>>> class. Or is this the correct/standard way to do this?
>> Yep, that's the correct way to do it. If you need to pass a form
>> dynamically to @validate you can pass a callable that returns the
>> form when called without args. However, for 'index' to redisplay
>> previous input and errors when called by errorhandling owhen
>> validation fails, exactly the same form instance that validated input
>> must be the one that redisplays errors ("displayed_form is
>> validated_form").
>>
>> Why would make so great that the form was defined inside "index"?
>> Keep in mind that the form would have to be initialized on every
>> request instead of just once on "compile" time... If you need to
>> reuse fields for similar but different forms you can define common
>> fields in a WidgetsLists (or a plain ol' python list) and concatenate
>> them as needed.
>>
>> Alberto
>
> It seems and feels weird to treat forms in such a special way.
> May be its because I come from the php/smarty world.
>
> Anyway, thanks a lot!!
>
> --
> miya
>
>
> >
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears" 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/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---