Articoli marcati con tag ‘coding’
Utilizzare il layout di un plugin da un punto qualunque dell’applicazione
CakePHP 1.2 introduce una serie di funzionalità dedicate esplicitamente allo sviluppo RAD di applicazioni.
In questo articolo spiego come è possibile utilizzare dei layout contenuti in uno specifico plugin utilizzando quindi il concetto stesso di plugin per re-distribuire contenuti grafici oltre alle funzionalità contenute in helpers e components.
All’interno di un metodo di controller, appena prima del render (o della conclusione del metodo) è sufficiente specificare plugin e layout che si desidera utilizzare per il rendering della richiesta:
... $this->plugin = 'Myplugin'; $this->layout = 'my_layout'; ...
Questo tipo di codice produce la richiesta del file: “/app/plugins/myplugin/views/layouts/my_layout.ctp” da utilizzarsi come layout per la richiesta in corso.
Utilizzare operatori sql in CakePHP find()
Riporto il sunto di una discussione sviluppata sul Gruppo Google di CakePHP inerente all’utilizzo di operatori SQL nelle operazioni di estrazione dati (finder query):
http://groups.google.com/group/cake-php/browse_thread/thread/89dd8a8846bad3a1?hl=en
L’autore ha la necessità di estrarre da un campo di testo un numero limitato di caratteri utilizzando l’operatore SQL LEFT:
LEFT(Table.field, len) as new_field_name
La soluzione proposta (e testata) consiste nell’utilizzo dell’operatore direttamente nell’elenco dei campi da estrarre come parametro aggiuntivo dell’operazione find().
$list = $this->User->find( "all", array(
fields = array(
'id',
'username',
'left(User.username, 5) as short_username'
)
));
Questo comando di estrazione genera come output la seguente struttura associativa:
array(
0 => array(
[User] => array(
[id] => 1
[username] = Marco Pegoraro
)
[0] => array(
[short_username] => Marco
)
)
)
Si può dunque notare come il campo ottenuto mediante operatore SQL sia stato erogato fuori dal raggruppamento del modello e inserito sotto ad un indice numerico.
Ho fatto alcuni test utilizzando le relazioni tra i modelli (belongsTo) e ho estratto campi da più modelli definendo campi elaborati da più modelli. Tali campi vengono sempre proposti sotto l’indice 0.
Al momento in cui scrivo la discussione è in attesa di una soluzione per modificare in modo esplicito il nome del raggruppamento di questi campi prodotto di un operatore SQL.