Plone form, selezione obbligatoria di un valore da una lista

Come rendere obbligatoria la selezione di un valore da una lista con z3c.form senza specificarne uno di default

A molti di noi capita di dover sviluppare un menu a tendina (combobox) con z3c.form e rendere il campo obbligatorio per l'utente.

Z3c.form in questo contesto ha un comportamento che può sembrare strano ma che possiamo modificare a nostro piacimento. Quando viene specificato un campo con la seguente interfaccia:

country = schema.Choice(
           title=_(u"Country"),
           vocabulary=u"country_vocabulary",
           required=True,
      )

z3c.form renderizza una combobox contenente i valori specificati in 'country_vocabulary' ed il primo valore della lista è selezionato automaticamente.

Come è già capitato, un utente distratto potrebbe salvare il form e, senza accorgersene, inviare dei dati non corretti al server. Esempio, in questo caso specifico, rischiamo di avere un sacco di utenti residenti in Afganistan :)

Per evitare questo inconveniente possiamo visualizzare un primo valore vuoto nel combobox con un label 'seleziona un valore' in modo che l'utente sia obbligato a specificare un'opzione e, nel caso non lo faccia, la form restituisca un errore.

Dalla documentazione di z3c.form si legge che per fare questo è sufficiente impostare l'attributo prompt del widget a True, in questo modo:

class Myform(...
   ...
def updateWidgets(self):
...
self.widgets['country'].promt = True

Ulteriori informazioni:

Share this on

Share |

On same topics

Commenti

comments powered by Disqus