Tag: cakephp

CakePHP: escludere una directory dall’url rewriting

5 febbraio 2011Categoria:php

Tramite il file .htaccess posizionato nella root di un’applicazione web sviluppata con CakePHP viene gestito l’url rewriting per tutte le chiamate. Nel caso in cui si voglia escludere una directory dall’applicazione delle regole impostate (ad esempio se si vuole installare un blog nella root) è sufficiente inserire una riga di codice nel file dopo la direttiva “RewriteEngine on“:

RewriteRule ^(blog).* - [NC,L]

Il codice completo del file .htaccess diventerà quindi:

Leggi tutto…

CakePHP: abilitare la compressione dei css con csspp

16 gennaio 2011Categoria:php

Per ridurre il tempo e la banda necessaria al caricamento dei css è possibile comprimere i css con degli script php che intervengono prima dell’invio del file al browser.
Con poche modifiche è possibile automatizzare l’operazione per le applicazioni sviluppate in CakePHP.
La versione di cake utilizzata per il test è la 1.3.6.

Leggi tutto…

CakePHP: tradurre i messaggi di validazione dei modelli

10 gennaio 2011Categoria:php

Per validare i dati server side in cakePHP si utilizza solitamente la proprietà $validate dei modelli:

class User extends AppModel {
    var $name = 'User';
    var $validate = array(
		'name' =>  array(
			'rule' => 'notEmpty',
			'message'=>"Campo obbligatorio"
		),
		'surname' =>  array(
			'rule' => 'notEmpty',
			'message'=>"Campo obbligatorio"
		),
		'mail' => array(
			'rule' => 'email',
			'message'=> "L'e-mail deve essere valida"
		)
	);
}

In questo modo non è però possibile gestire la traduzione dei messaggi di errore nel caso di un’applicazione multilingua.
Per risolvere il problema si deve creare il file app_model.php nella cartella app con il seguente codice:

Leggi tutto…

CakePHP: modificare la posizione dei messaggi di errore nei forms

7 gennaio 2011Categoria:php

CakePHP permette di validare i dati dei forms server side tramite la proprietà $validate dei modelli. Ad esempio:

class User extends AppModel {
    var $name = 'User';
    var $validate = array(
        'name' => 'notEmpty',
        'surname' => 'notEmpty',
        'mail' => 'mail'
    );
}

Utilizzando il Form Helper è poi possibile visualizzare automaticamente gli errori riscontrati all’interno della pagina. Leggi tutto…

CakePHP: impostare il layout automaticamente in base alla sezione del sito

23 dicembre 2010Categoria:php

All’interno di un controller è possibile impostare il layout della pagina tramite la proprietà $this->layout.
Per impostare una regola generale per la gestione dei layout dell’applicazione è possibile scrivere una funzione apposita all’interno dell’app_controller.

In un caso reale potremmo ad esempio avere 4 layout diversi:

  1. public: per la visualizzazione del sito pubblico
  2. admin: per il pannello di amministrazione
  3. fornitore: un layout che verrà visualizzato agli utenti che eseguono il login come fornitori
  4. ajax: per le richieste asincrone tramite javascript

Leggi tutto…

CakePHP : impostare la console in Windows

19 aprile 2010Categoria:php

Il framework CakePHP mette a disposizione delle applicazioni da richiamare tramite console che permettono di automatizzare alcune operazioni altrimenti lunghe e noiose.

Per eseguire tali script in Windows è necessario preparare il sistema in modo adeguato seguendo una semplice procedura:

Leggi tutto…

CakePHP: ricavare la lista dei controllers e salvarla in cache

12 aprile 2010Categoria:php

Ecco una funzione che può tornare utile durante lo sviluppo in cakePHP.

Il seguente snippet permette di ricavare dinamicamente la lista di tutti i controllers e salvarla in cache.

In questo caso la lista verrà salvata come stringa separata da pipes:


controller_a|controller_b|controller_c

Ed ecco il codice:


//legge la lista dei controllers dalla cache
//(se è stata precedentemente creata)
$controllers = Cache::read('controllers_list');
//se la lista in cache non esiste
if ($controllers === false)
{
	$controllers = Configure::listObjects('controller');

	foreach ($controllers as &$value)
	{
		$value = Inflector::underscore($value);
	}

	$controllers = implode('|', $controllers);
	//scrittura della lista in cache
	Cache::write('controllers_list', $controllers);
}

Usare FancyUpload con CakePHP

22 marzo 2010Categoria:php

FancyUpload è uno script Flash che permette di rimpiazzare il classico file uploader html. Lo script è compatibile con tutti i browser tramite l’utilizzo delle librerie Mootools ed è molto semplie da implementare.

Supporta la selezione multipla dei files, l’upload sequenziale e indica inoltre il progresso del caricamento mediante barre animate.

Per utilizzarlo all’interno di sezioni del sito protette da password bisogna però prendere alcuni accorgimenti, altrimenti non sarà possibile eseguire correttamente il caricamento dei files. Infatti utilizzando le sessioni CakePHP rifiuta le connessioni provenienti da Flash ritenendole non autorizzate.

Ecco come fare per risolvere il problema.

Leggi tutto…

Visualizzare i files .thtml e .ctp in Dreamweaver

9 marzo 2010Categoria:software

Cakephp utilizza i files .thtml e .ctp, che non sono altro che files php con un’estensione diversa.
Per aprire tali files in Dreamweaver cs4 per Windows come se fossero comuni files php (utile per i suggerimenti e la colorazione del codice) basta seguire questi semplici passaggi:

Leggi tutto…

CakePHP: una funzione per eliminare i files da tmp/cache

11 febbraio 2010Categoria:php

CakePHP utilizza un sistema interno di caching degli oggetti per velocizzare le operazioni più comuni.
In automatico si occupa del caching di modelli, filepath e traduzioni (quelle dei files .po). In aggiunta è possibile configurare il caching per altri tipi di oggetto, tra cui le views, i css e files js.

Eseguendo degli aggiornamenti al codice e ai files capita spesso di vedere il software sviluppato in cake comportarsi ancora come quello “non aggiornato”. Questo accade in quanto i files della cartella cache hanno una durata più lunga e non vengono aggiornati subito dopo la modifica.

Leggi tutto…