Errori Personalizzati in z3c.form

la libreria z3c.form permette di personalizzare la presentazione degli errori riscontrati nel form in fase di validazione in molti modi, e puntualmente li dimentico quasi tutti. ecco una breve nota per non scordare come si fa.

Prima di tutto: costruite le vostre applicazioni web con Plone e Zope? ok.. siete nel posto giusto :p

Poi: non conoscete ancora cosa sia z3c.form? male! andate a farvi una cultura, dato che questa bella libreria python/zope3 potrebbe esservi molto utile per costruire le vostre form web.

Veniamo a noi: gestire gli errori da mostrare all'utente

Il machinery di z3c.form gestisce automaticamente una serie di errori da mostrare all'utente, in particolare tutto ciò che può essere specificato sul singolo campo direttamente dall'interfaccia che lo descrive.

Un'altra serie di errori vengono gestiti automaticamente specificando dei metodi con decoratore @invariant direttamente sulle interfacce, e anche questi sono un toccasana :)

Ma cosa fare quando si ha bisogno di attivare una nostra validazione che esce dagli "schemi" standard, e comunque richiede un feedback all'utente?

Restituire l'errore al form con un WidgetActionExecutionError

La documentazione è chiara, ma io puntualmente lo dimentico.. per questo lo annoto in questo post:

come recitato dalla documentazione (http://docs.zope.org/z3c.form/form.html#actions-with-errors) è sufficiente sollevare un WidgetActionExecutionError al momento giusto :)

from z3c.form import interfaces
[...]
@button.buttonAndHandler(u'Check')
def handleCheck(self, action):
    data, errors = self.extractData()
    if data['id'] in self.getContent():
        raise interfaces.WidgetActionExecutionError(
            'id', zope.interface.Invalid('Id already exists'))

Per chi ancora non sa di cosa sto parlando, e ha bisogno di gestire form web da codice.. affrettatevi a fare un giro con z3c.form! ;)

Share this on

Share |

On same topics

Commenti

comments powered by Disqus