In molti casi ho avuto la necessità di scrivere una data “user-friendly”.

Se diciamo all’utente che un dato evento si svolgerà il 11/11/14 gli stiamo fornendo sicuramente un’informazione completa,
Ma in molti casi (non tutti ovviamente) potremmo essere più diretti con l’utente, ad esempio,
dicendogli che un dato evento si svolgerà “tra 3 giorni” o  si è svolto “3 giorni fà” .

L’informazione che stiamo fornendo in questo caso, è sicuramente più immediata ed attraente.

Per fare questo con il CakePHP possiamo creare un nuovo CakePHP Time Helper che potremmo utilizzare in tutte le nostre view.

Come si crea un helper personalizzato

Creare un Helper in CakePHP è molto semplice.
Nella cartella app/View/Helper inseriamo un nuovo file (il nostro nuovo Helper)
chiamandolo semplicemente in questo modo NomeHelper.php.

Ricordatevi di rispettare il camelCase “che in in Cakephp è quasi sacro”.

 La possibilità di utilizzare un Helper dentro ad Helper

CakePHP ci fornisce la possibilità di utilizzare un Helper dentro ad un Helper,
a questo punto il nostro metodo “whatDay($data)” potrebbe sfruttare i metodi dell’helper Time nativo nel core di CakePHP.
L’esempio di prima diventerebbe ancora più semplice.

Inizializzare l’Helper

Abbiamo due strade, dove vogliamo utilizzare questo Helper?
Su tutto il sito? quindi basterà inizializzarlo nell’AppController
Altrimenti possiamo inizializzarlo soltanto nel controller di nostro interesse.

Come si richiama un Helper dalla View

Una volta che creato un Helper personalizzato, è giunto il momento di utilizzarlo.
La cosa interessante è che sarà disponibile per tutte le view del progetto, e il suo utilizzo è semplicissimo.

Il nostro caso Specifico “CustomtimeHelper”

Ho detto all’inizio che vi avrei parlato di un helper personalizzato per gestire le date in maniera “user-friendly”.
Eccoci al dunque. Iniziamo con il dichiarare le variabili che ci servono.

Dichiariamo due tipi di file “long” e “short”, versione lunga e versione corta dei nomi.
Dopo di che scopriamo a cosa serve l’array $settings andando a vedere il primo metodo privato di questo Helper.

Queste sono le impostazioni per la nostra visualizzazione.
Alcune possono essere settate nel momento in cui richiamiamo il metodo, altre sono necessarie.
Per esempio possiamo decidere se vedere o meno le ore e i minuti, e possiamo decidere se vedere la versione breve o la versione lunga dei nomi (Lun 10 Nov || Lunedì 10 Novembre)

Dopo di ché andiamo a vedere i metodi pubblici del nostro CustomtimeHelper

In questi metodi stiamo utilizzando delle funzioni native di CakePHP in particolare i metodi dell’Helper Time.
Ma veniamo all’utilizzo dell’Helper.

Abbiamo tre metodi pubblici.
Analizziamo il primo –> format($data, $settings  = array()),
e vediamo cosa restituisce.

Analizziamo adesso –> timeAgo($data, $settings = array())
Solitamente si usa per delle date passate

Analizziamo adesso –> timeLeft($data, $settings = array())
Solitamente si usa per delle date future

I parametri opzionali possono essere

  • type => ‘short’ —> per avere i nomi in versione breve (Lun 10 Ott)
  • showHours => false –> per non mostrare ore e minuti
  • showHourPast => false –> per non mostrare ore e minuti in date passate

Codice Sorgente

Puoi scaricare il codice sorgente dal nostro repository: https://github.com/cakephp-tutorial/helpers
Seguimi

Lorenzo Semorile

Amante degli spazi bianchi e vuoti,
Preferisco il togliere al mettere.
Mi occupo di front-end developing
anche se in giro dico che "faccio siti web".
L'usabilità e la user-experience sono il mio cruccio ed i miei obbiettivi.
Non ci dormo la notte..
Seguimi

Latest posts by Lorenzo Semorile (see all)