Vai ai contenuti. | Spostati sulla navigazione

Sezioni

Maurizio Delmonte

Da anni consulente per aziende informatiche specializzate in Plone e tecnologie Open Source, dal 2009 è approdato ad Abstract. Adora frequentare sprint e conferenze, e incontrare persone interessanti appassionate del web e degli strumenti per costruirlo.

Autori
 

Errori Personalizzati in z3c.form

creato da Maurizio Delmonte at 21/06/2010 17:18 |
Filed under: , ,

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! ;)

| More
Azioni sul documento
Powered by DISQUS comment system
Strumenti personali