Form Builder: rilasciata la versione 1.4

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

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

multicheck

<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

selectbox

<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

number_format

<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?

4 pensieri su “Form Builder: rilasciata la versione 1.4

  1. 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

  2. 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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *