Creare Helpers personalizzati per CakePHP
Il CakePHP di basa sul design pattern DRY (Don't Repeat Yourself), secondo il quale bisogna evitare il più possibile la duplicazione del codice per renderlo più leggibile e più semplice da mantenere. Per rendere questo design possibile e non ripetere le stesse funzioni all'interno delle view ci sono gli Helpers. Oltre a quelli presenti di default (ad esempio gli helpers Session, Html, Javascript) è possibile crearne altri per soddisfare esigenze specifiche in pochi semplici passaggi. In questo articolo vedremo come creare una funzione richiamabile all'interno delle views per accorciare una stinga di testo ad una lunghezza fissa.
STEP 1 Creare il file myhelper.php nella cartella app/views/helpers/ e scrivere il seguente codice:
<?php
/* /app/views/helpers/myhelp.php
*
* helper con funzioni generiche utili per le views
*/
class MyhelpHelper extends AppHelper {
/**
* Se la lunghezza della stringa è maggiore di $caratteri_max
* "taglia" la stringa è aggiunge "..." alla fine
* @param <string> $campo
* @param <int> $caratteri_max
* @return <string>
*/
function fixLength($stringa,$caratteri_max=15)
{
if(strlen($stringa)>$caratteri_max)
{
$stringa = substr($stringa, 0, $caratteri_max).'...';
}
return $stringa;
}
}
?>
STEP 2 Nel controller bisogna ora aggiungere l'Helper alla lista di quelli utilizzati:
<?php
class PagineController extends AppController {
var $pageTitle = 'Test Helper';
var $layout = 'layout_sito';
var $helpers = array('Myhelp');
................
STEP 3 Ora all'interno delle views è possibile utilizzare la funzione:
<?php
//ricava una stringa dal database senza conoscerne la lunghezza
$stringa_da_db = $this->data['User']['descrizione'];
//riduce la lunghezza a 15 caratteri
echo $myhelp->fixLength($stringa_da_db);
?>
Se invece si vuole un stringa più lunga o più corta sarà sufficiente specificare anche il secondo parametro del metodo fixLength:
//riduce la lunghezza a 50 caratteri
echo $myhelp->fixLength($stringa_da_db, 50);
Naturalmente si possono inserire più metodi all'interno della stessa classe oppure creare più Helpers per gestire diversi gruppi di funzioni.

Commenti