Condividi con:

Sviluppo di moduli per Prestashop 1.6 e 1.7

Di solito dai controller del backoffice si visualizza un elenco sotto forma di tabella per mostrare i dati. La creazione di questi dati da visualizzare è eseguita nella funzione della classe AdminController getList().

Questa funzione, legge la configurazione della tabella, la query di ricerca e genera un array contenente i nomi delle colonne e il risultato della query che poi sarà passato alla funzione renderList() che si occuperà di visualizzare i dati nella tabella predefinita di Prestashop (generata dal controller HelperList).

Grazie però a due Hook che ci mette a disposizione Prestashop, è possibile interagire esternamente con queste due funzioni e generare una tabella modificandola secondo le nostre necessità, inserendo o eliminando colonne o addirittura cambiando la sorgente dei dati per visualizzarne altri a nostro piacimento.

Gli Hook che Prestashop mette a disposizione sono:

  • action<nome del controller>ListingResultModifier($params)
  • action<nome del controller>ListingFieldsModifier($params)

ListingResultModifier

Questo hook permette di modificare il risultato della query dopo che è stata eseguita. È chiamato dentro la funzione getList() del controller AdminController:

La funzione passa il nome del controller come argomento per creare il nome completo della funzione, se per es. il controller si chiama AdminOrder, il nome completo della funzione sarà actionAdminOrderListingResultsModifier.

La chiamata alla funzione passa due parametri, list, che contiene un array associativo con il risultato della query e list_total, che contiene il totale delle righe dell’array, serve per la paginazione della tabella.


ListingFieldsModifier

Questo hook permette di modificare le colonne da visualizzare nella tabella. È chiamato dentro la funzione processFilter() del controller AdminController:

Anche questa funzione passa il nome del controller come argomento per creare il nome completo della funzione, se per es. il controller si chiama AdminOrder, il nome completo della funzione sarà actionAdminOrderListingFieldsModifier.

La chiamata alla funzione passa un parametro, fields, che contiene un array associativo con l’elenco delle colonne da visualizzare nella tabella.


Come usare gli hook

Un hook per essere usato, deve essere prima installato nel modulo che dovrà chiamare la funzione. Questa operazione si esegue chiamando la funzione registerHook nella procedura install() del modulo.

In questo modo, quando sarà chiamato l’hook corrispondente, Prestashop cercherà nei moduli registrati, quali di essi hanno la giusta chiamata alla funzione ed eseguirà il codice.

Nel modulo dobbiamo creare le due funzioni in questo modo:

public function hookActionAdminOrderListingResultsModifier($params)

public function hookActionAdminOrderListingFieldsModifier($params)

Da notare che le funzioni iniziano con la parola hook e poi con il nome dell’hook da chiamare. la variabile $params contiene i parametri che servono alla funzione per essere processata.

Una volta terminata questa procedura, il modulo è pronto a ricevere le chiamate dell’hook e a processare i dati per visualizzarli nella tabella.

Nel prossimo articolo creeremo un modulo che permetta di visualizzare nella tabella degli ordini di Prestashop, una colonna con il tracking number della spedizione, così da vedere all’opera i due hook.

Condividi con:

Condividi con:

Creare un modello

Il modello è il componente che si occupa di interagire con il database. Nel modello sono inserite le istruzioni per il CRUD.

Il modello di CakePHP è diviso tra l’oggetto Table e l’oggetto Entity. Mentre gli oggetti Table rappresentano e forniscono accesso a una raccolta di oggetti, le Entity rappresentano singole righe o oggetti di dominio nell’applicazione. Le Entity contengono proprietà e metodi persistenti per manipolare e accedere ai dati che contengono.

L’oggetto Table provvede all’accesso ai dati di una specifica tabella presente nel database e deve essere inserito nel percorso /src/Model/Table. Per convenzione si usa <nome tabella>Table.php

Nel nostro caso, dato che abbiamo creato la tabella articles, l’oggetto Table avrà come nome ArticlesTable.php.

Le convenzioni per i nomi sono importanti in CakePHP. Infatti, nominando l’oggetto secondo queste convenzioni, CakePHP può accedere e gestire la tabella grazie alle sue numerose funzioni predefinite.
Nel nostro caso, CakePHP dedurrà che l’oggetto ArticlesTable si riferisce alla tabella articles e quindi il suo controller sarà ArticlesController.

 

Creare il controller

Il controlle è l’oggetto che interagisce con la pagina visualizzata, in questo caso la pagina degli articoli, infatti il controller gestisce le interazioni tra i modelli di business e le viste.

I controller risiedono nella cartella /src/Controller e rispettando la convenzione sui nomi di CakePHP il nostro controller sarà chiamato ArticlesController.php

Condividi con:

Condividi con:

In questo tutorial vi guiderò attraverso la creazione di un semplice blog grazie al framework cakePHP. Il tutorial comincerà con la creazione del database e vi accompagnerà nell’implementazione dei metodi più comuni del CRUD, grazie ai metodi e alle classi già messe a disposizione da cakePHP.

Prima di iniziare, bisogna avere a disposizione e già installato:

  • Un sistema operativo Linux (es: Ubuntu 16.04 LTS)
  • Apache2
  • MySQL
  • PHP 7.0 o superiore
  • il modulo mod_rewrite abilitato
  • le librerie mb_string e intl di PHP
  • il modulo pdo_mysql attivato
  • una conoscenza di base di PHP e MySQL
  • curl
  • composer

Primo passo: installare cakePHP

CakePHP si installa tramite composer, se non l’avete ancora installato, questo è il momento buono!

Da terminale digitate

Non avete curl? Da terminale digitate

Entrate nella directory di apache che visualizza le pagine web, di solito /var/www/html con il comando

e digitate

dopo che composer avrà finito il suo lavoro avrete nella cartella di Apache una nuova cartella chiamata blog con la seguente struttura

Prima di iniziare è meglio settare i permessi sulla cartella così da non avere problemi in futuro:

Creare il database

Adesso che abbiamo CakePHP installato nella nostra cartella blog, passiamo a creare il database:
sempre da terminale digitare

digitare la password di root e poi

create un file di testo e chiamatelo create.sql

e poi copiate queste istruzioni nel file di testo

Salvate il file e poi eseguite da terminale questo comando

La scelta dei nomi per la tabella non è casuale, perchè se si segue la convenzione dei nomi di CakePHP, si avrà la possibilità di usufruire di una vasta gamma di librerie già pronte per la gestione di un database.

 

Configurazione del database

Prima di potere usare CakePHP, dobbiamo dirgli dove trovare il database appena creato e come accedervi. Queste informazioni sono conservate nel file config/app.php alla sezione Datasources.default.

La configurazioneè molto semplice, basta inserire il nome del database, user e password e CakePHP sarà in grado di comunicare col database.

Adesso avete un database con un tabella e dei dati dentro. Possiamo passare a gestire questi dati con CakePHP

Vai alla parte 2

Condividi con:

Condividi con:

Per inserire il compnente tinyMCE in un modulo di Prestashop (v1.6) ci sono due modi diversi:

  • Utilizzando Un template:

Per prima cosa definiamo il componente nella funzione getContent()

Poi creiamo il componente nel template smarty

Condividi con: