Prestashop, usare le chiamate Ajax nei moduli

Pubblicato da Max Palermo il

Condividi con:

Prestashop gestisce le chiamate ajax direttamente nel modulo o nel controller. Basta chiamare la funzione desiderata passando l’argomento ajax nei parametri della chiamata.
Le funzioni ajax in Prestashop iniziano tutte con ajaxProcess e poi il nome della funzione.

In questo caso il nome della funzione è MyFunction. É consigliabile usare alla fine della funzione il metodo exit() per evitare di sporcare il risultato della funzione con dati non desiderati.

La chiamata ajax si gestisce tramite Javascript, quindi bisogna passare alcuni parametri fondamentali tramite le variabili smarty.

  • $url: Il percorso del modulo da chiamare. Di solito, quando operiamo in BackOffice il link da passare è il percorso alla pagina di amministrazione dei moduli. In questo esempio La chiamata ajax gestisce la pagina di configurazione di un modulo;
  • $token: è il token di sicurezza per la corretta visualizzazione della pagina;
  • $module_name: è il nome del modulo da configurare;

Invece, se la chiamata ajax proviene da un controller, i parametri da passare sono diversi:

La chiamata ajax tramite javascript si imposta in questo modo:

  • type: ‘POST’ – i parametri saranno passati tramite POST;
  • dataType: ‘json’  – La chiamata ajax si aspetta come risposta dati in formato json;
  • url: ‘{$url’} – Tramite smarty compiliamo questo campo con il link alla pagina di amministrazione dei moduli;
  • ajax: true – Indica a Prestashop che questa è una chiamata Ajax
  • action: ‘myFunction’ – Nome della funzione da eseguire
  • token: ‘{$token}’ – Tramite smarty compiliamo questo campo con il token di sicurezza
  • Se la funzione ha successo sarà gestita nella sezione .done()
  • Se la funzione ha qualche problema sarà gestito nella sezione .fail()

Se la chiamata ajax è eseguita tramite controller lo script sarà leggermente diverso

  • url: ‘index.php’ – il link alla pagina è quella principale
  • controller: ‘{$controller}’ – Il nome del controller da compilare tramite smarty

Se tutto andrà bene, quando invocherete la chiamata ajax nell’esempio, la pagina vi risponderà con

senza che ci sia bisogno di ricaricare la pagina.

Inviare dati alla funzione ajax:

Nella funzione gestire la lettura dei dati in questo modo:

E nello script ajax inviare i dati nella sezione data:

  • il parametro name: ‘John Doe’ sarà passato alla funzione e letto tramite POST con Tools::getValue(‘name’, ‘ ‘);

 

Condividi con:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *