| Aggiungere un filtro alle liste |
|
|
|
| Joomla 1.7 |
| Lunedì 24 Ottobre 2011 19:01 |
|
Sono le piccole utilità che rendono meno stressante l'utilizzo di una lista. E' vero che esiste comunque una comoda paginazione ma quando le liste si compongono di molte pagine può venire utile usare uno o più filtri. Non è difficile, vediamo come fare... L'esempio che segue riguarda la parte amministrativa, dove le liste sono più usate, per l'amministrazione di contenuti. Iniziamo con la parte di immissione dei dati discriminanti; per fare questo occorre creare un campo di input, che sia un semplice campo di testo o una combo box valorizzata. Per creare un campo di input in un form si usa la classe JForm. La parte "visuale" del campo di input è rappresentata da un file php contenente un metodo da sovrascrivere e dall'istanza del suo oggetto nel file del template di visualizzazione. Chiamiamo il nostro filtro "aziendafilter", un ipotetico filtro di una lista fatture da filtrare per azienda di appartenenza. Il file si chiamerà aziendafilter.php e sarà collocato in una cartella fields all'interno della cartella models: administrator/com_componente/models/fields/aziendafilter.php Importiamo prima le librerie necessarie: Ora estendiamo la classe JFormFieldList $type sarà il tipo di form da usare come riferimento. In pratica estende i tipi di fields standard per costruire il nostro combobox con la lista delle aziende (il cui id farà da discriminante per la query che estrae la lista delle fatture) usiamo getOptions() Bene, abbiamo costruito la lista che comporrà la nostra select. Ora dobbiamo collocarla nel template della vista lista (come standard joomla usa nominare la cartella aggiungendo la "s" finale in caso la vista sia relativa a più elementi come nel caso appunto delle liste. Quindi il nostro componente ipotetico per fatture avrà all'interno della views due cartelle, una fattura e l'altra fatturas! bello eh! L'hanno studiata per nomi anglofoni... Andiamo ad aprire il nostro file del template: administrator/com_componente/views/fattures/tmpl/default.php Appena all'interno del form, dove la vostra grafica ve lo consente, inserite la combo box Notate che che il valore dell'id lo recupero dalla, o meglio dalle variabili state, e più precisamente da "filter", l'array che contiene tutti i valori usati come filtro, Le variabili "state" vengono usate da Joomla per molte funzionalità. Questo documento è un po' datato ma rende l'idea. Occupiamoci ora di settare questa variabile e di come recuperarla per filtrare la nostra query "principale". Non chiamando con il submit nessuna view o controller, il form spedito ritorna alla vista di default; la differenza è che ora tra le variabili state abbiamo la nostra tra quelle "filter". Quello che segue è il nostro ipotetico file fatturas.php che si trova nella cartella models. Il metodo getListQuery è quello che ci permette di creare la lista della vista di default. Se nelle variabili "state" è presente il nostro id discriminante, lo aggiungiamo alla discriminante della query. PopulateState è il metodo che Joomla ci offre per popolare lo state in un model. Ora ancora una cosa ed abbiamo finito, dobbiamo occuparci della view. Infatti recuperare l'id discriminante ci permette di prevalorizzare la nostra combo. Quindi all'interno del file view.html.php ... e all'interno della nostra classe, recuperiamo le variabili state ... e includiamo il nostro field creato all'inizio Bene, abbiamo finito. Se avete problemi o notate errori non mancate di segnalarmeli. |