Passa ai contenuti principali

Utilizzare i servizi nei templates twig

Nello sviluppo di un'applicazione web spesso ci si imbatte nel dover progettare un'architettura dinamica
L'implementazione di un tema grafico è tutt'altro che che banale
Twig viene in aiuto con l'estensione dei template, i blocchi, gli include e i render controller
Inoltre c'è la possibilità di scrivere estensioni ad hoc per il proprio progetto
Partiamo dal presupposto che il tema grafico non deve essere fisso, ossia può essere cambiato col tempo
La progettazione del tema grafico richiede di renderlo il più possibile staccato dal controller
Quindi in twig è necessario fare un build di vari frammenti e dati
In linea generale i dati devono essere richiamati da twig e non viceversa
Partendo da questo presupposto, in fase di generazione del template il controller deve inserire tutti i dati, ma proprio tutti
Il controller però in questo caso diventa monolitico
Non è la soluzione migliore
L'altra opzione è inserire in twig i render controller, ma i due oggetti si legano troppo rendendo difficile e lungo una sostituzione della veste grafica
L'ultima opzione è un'idea che mi  venuta strada facendo e di cui non conoscevo l'esistenza, anche perchè la documentazione non è molto chiara
Richiamare in twig i servizi
Il gioco è semplice
twig:
    strict_variables: "%kernel.debug%"
    #engines: ['twig', 'php']
    globals:
       ......

       dati_servizio: @mio_servizio


in twig ora è utilizzabile il servizio in maniera molto semplice:
 {% for dato in dati_servizio.getList() %}
    <option>
        {{ dato.nome }}
    </option>
 {% endfor %}

In questo modo è possibile richiamare i metodi del servizio all'interno di Twig e recuperare i dati

Commenti

Post popolari in questo blog

install language on osTicket

this simple guide aims you to install and configure your language on osTicket i written this guide based on forum post http://osticket.com/forum/discussion/76252/installing-language-pack

Develop Prestashop Module - puntata 1 creazione di un modulo prestashop

la creazione o lo sviluppo di un modulo   Prestashop funziona sia per il front-end che il back-end del sistema la struttura di un modulo è fissa che si compone con una serie di step: file di configurazione file di installazione files controllers per l'amministrazione files controllers per il frontend files delle view creazione dell'infrastruttura base del modulo per Frontend all'interno della cartella modules di prestashop creare una cartella  esempio     <root>          |---modules                    |-----miomodulo naturalmente il nome del modulo lo potete personalizzare all'interno della cartella miomodulo  creare i seguenti file config.xml index.php miomodulo .php   <-- inserite il vostro nome modulo al posto di mio modulo index.php il codice di index php , file che dovrà essere inserito in ogni cartella : <?php /* ...

Prestashop: override PayPal about.tpl

Abbiamo incontrato una difficoltà nell'override del template "about.tpl" di PayPal su Prestashop. Abbiamo cercato sul forge di Prestashop e abbiamo trovato questo bug . Ora il consiglio che viene dato è quello di utilizzare il "core display method". Così dopo un po' di debug l'abbiamo fatto. Per abilitare all'override l'"about.tpl" di Prestashop è necessario modificare il file "modules/paypal/backaward_compatibility/Display.php": <?php /**  * Class allow to display tpl on the FO  */ class BWDisplay extends FrontController { // Assign template, on 1.4 create it else assign for 1.5 public function setTemplate($template) { if (_PS_VERSION_ >= '1.5') parent::setTemplate($template); else $this->template = $template; } // Overload displayContent for 1.4 public function displayContent() { parent::displayContent();                 echo Module::display('paypal', ...