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.

  1. Ciao, volevo chiederti un consiglio, sto cercando un plugin per cakephp che mi permetta di utilizzare e gestire un blog multiutente. Ne conosci qualcuno da potermi consigliare ? Grazie!

  2. @Nicola: non conosco plugin per CakePHP che facciano quanto chiedi. A dire il vero al momento non mi sembra esistano dei progetti coerenti in Cake che forniscano applicazioni pronte all’uso.

    Io sto cercando di costruire un qualcosa del genere e nei prossimi tempi dovrei anche riuscire a pubblicare qualcosa. Resta sintonizzato sul sito così ne verrai sicuramente informato!

  3. Ho trovato un bel problema nella soluzione proposta in questo post. Essa funziona benissimo quando tentiamo la utilizziamo da un controller di applicazione ma fallisce quando tentiamo di condividere un layout tra plugins differenti.

    Se il controller “order” del plugin “pizza” vuole utilizzare il layout “pink” del plugin “good_layouts” e utilizziamo la soluzione qui proposta otteniamo un errore di vista mancante in quanto, dopo aver specificato il plugin in cui cercare il layout, CakePHP mantiene la medesima impostazione anche per cercare la vista.

    La soluzione proposta Majina in Google Groups (http://groups.google.com/group/cake-php/browse_thread/thread/57ffeac093b1e467) è di estendere la viewPath del sistema con le viste del plugin di cui si intende fare uso:

    $viewPaths = Configure::read( ‘viewPaths’ );
    array_push( &$viewPaths, APP.’plugins’.DS.’good_layout’.DS.’views’.DS );
    Configure::write( ‘viewPaths’, $viewPaths );

    Così facendo è possibile definire il layout desiderato omettendo il dettaglio del plugin. CakePHP lo cercherà nel posto giusto.

  4. Grazie per la risposta Peg. Ho bisogno di un plugin di questo tipo per due lavori di tesi, saresti anche ed ovviamente inserito nel testo :) . Anche se non credo riusciremo a coincidere con i tempi.
    Ho trovato un plugin, si chiama lilblogs, che pare sia adatto allo scopo, ma ha molti bug e non è poi tanto scritto bene. Ma basta ot :) .

  1. No trackbacks yet.