Continua lo sviluppo di questa libreria, di cui ho fatto il mio cavallo di battaglia!
Per chi non l’ha mai vista in azione ecco qui il link alla guida iniziale della prima versione: Form Builder v1.0
Nuove funzionalità
Con il susseguirsi delle versioni sono state introdotti diversi miglioramenti tra cui:
- plugin TinyMCE
- prevenzione degli attacchi di tipo CSRF (Cross-site request forgery)
- campo composto da un elenco di checkbox (con popolamento valori da DB e PHP)
- possibilità di raggruppare le voci all’interno dei select box (tag <optgroup>)
- formattazione automatica dei numeri decimali
- possibilità di avere dei campi con una maschera di inserimento (ad es. date, orari)
- il codice HTML generato è più facile da utilizzare con gli stili CSS
Demo
La demo è consultabile a questa pagina
Download
Il pacchetto completo è scaricabile QUI
Esempi
Per rendere più veloce la comprensione e l’utilizzo, mostro di seguito alcuni esempi:
TinyMCE
<field> <id>fieldname</id> <type>textarea</type> <extra>tinymce</extra> </field>
Prevenzione degli attacchi di tipo CSRF (Cross-site request forgery)
<field> <id>csrf</id> <type>csrf</type> </field>
Il tempo di vita di default per il token è di 45 secondi, ma può essere modificato tramite il metodo:
$form->setCsrfExp(60);
Elenco di checkbox con estrazione valori da DB
<field> <id>fieldname</id> <type>multicheck</type> <lookup> <table>country JOIN continent ON country.continent=continent.code</table> <id>country.code</id> <caption>country.name</caption> <category>continent.name</category> <orderby>continent.name,country.name</orderby> </lookup> </field>
Raggruppare le voci all’interno dei select box con estrazione valori da DB
<field> <id>fieldname</id> <type>select</type> <lookup> <table>country JOIN continent ON country.continent=continent.code</table> <id>country.code</id> <caption>country.name</caption> <category>continent.name</category> <orderby>continent.name,country.name</orderby> </lookup> </field>
Raggruppare le voci all’interno dei select box con popolamento valori da PHP
<field> <id>fieldname</id> <type>select</type> </field>
$file = 'form.xml'; $form = new FormBuilder($file); $select = array('fieldname' => array( 333 => 'ciao', 'pippo' => array(444=>'pluto', 555=>'topolino'))); $form->setSelects($select);
Formattazione automatica dei numeri decimali
<field> <id>fieldname</id> <type>text</type> <extra>number_format</extra> </field>
Change Log
Version 1.4.1
- Bug fixes
Version 1.4
- possibilità di utilizzare gli <optgroup> negli elementi <select>
Version 1.3
- modificata struttura html del form
- modificati attributi id, name, class generati automaticamente
- migliorato controllo campi required per elementi ripetuti
- migliorato controllo di validazione per elementi ripetuti
Version 1.2
- corretta la validazione dei campi con prefisso
- aggiunta formattazione automatica dei decimali
- migliorata maschera di inserimento e validazione date
Version 1.1
- aggiunto plugin TinyMCE
- caricamento dei JS solo per le estensioni utilizzate
TO DO list
- campo CAPTCHA
- proposte?
Ciao Andrea,
ottima la versione del Form Builder v14, bel lavoro, ma i metodi isDate, date2db, compareDates della classe Utility dove sono? 🙂
Errore della tua pagina in demo:
Fatal error: Call to undefined method Utility::isDate() in /home/mhd-01/www.andreaventuri.it/htdocs/labs/form_v14/class/FormBuilder.php on line 460
Ciao, grazie mille per la segnalazione! Ho appena rilasciato una nuova versione scaricabile all’indirizzo http://blog.andreaventuri.it/wp-content/uploads/2012/01/form_v141.zip
Ciao Andrea veramente un bel lavoro,
volevo capire se era possibile caricare dei campi dopo la scelta da un select.
Mi spiego meglio, selezionando una determinata voce da una select mi caricava una serie di campi, selezionandone un’altra ne caricava di diversi, una sorta di sottoform.
Ciao
Ciao Biagio e grazie per i complimenti!
Questa libreria non supporta nativamente la funzionalità di cui hai bisogno però puoi scrivere in javascript una funzione ed inserirla nella pagina in cui è presente il form.
Guarda questo esempio http://labs.andreaventuri.it/labs/form_v14/form06.php