Errore array_column() expects parameter 1 to be array nel modulo ps_edition_basic di PrestaShop 8 – Come risolverlo

Durante l’uso della versione 8.2.1 di PrestaShop, potresti imbatterti in questo errore fatale, generato dal modulo ps_edition_basic, componente ufficiale incluso nell’edizione “Classic” o “Basic” del CMS.

L’errore

Nel file var/logs/prod.log o direttamente nel pannello debug, potresti trovare un messaggio simile:

phpCopiaModificaUncaught PHP Exception TypeError: "array_column() expects parameter 1 to be array, null given" 
at modules/ps_edition_basic/src/Controller/AdminPsEditionBasicPsAcademyController.php line 58

Causa

Il modulo ps_edition_basic interroga l’API di PrestaShop Academy per ottenere prodotti con MPN videoHosted e liveHosted. Se una delle due risposte è null o malformata, la funzione array_merge() riceve un parametro null, e array_column() va in errore perché si aspetta un array.

La soluzione: fix sicuro e compatibile

Step 1: apri il file

swiftCopiaModificamodules/ps_edition_basic/src/Controller/AdminPsEditionBasicPsAcademyController.php

Step 2: individua questa funzione (intorno alla riga 50–60)

phpCopiaModificareturn array_column(array_merge($responseContentsLiveHosted['products'], $responseContentsVideoHosted['products']), 'id');

Step 3: sostituiscila con questa versione corretta:

phpCopiaModifica$productsVideo = $responseContentsVideoHosted['products'] ?? [];
$productsLive = $responseContentsLiveHosted['products'] ?? [];

return array_column(array_merge($productsLive, $productsVideo), 'id');

Questo codice verifica se ciascun array products esiste prima di usarlo. In caso contrario, lo sostituisce con un array vuoto ([]), evitando così il crash.

Perché funziona

Il bug nasce da una mancanza di validazione sui dati in arrivo da un’API esterna. Usando l’operatore ?? [], ci assicuriamo che anche in caso di errore l’applicazione continui a funzionare senza blocchi.

Suggerimenti

  • Questo errore è comune in installazioni dove il server non riesce a raggiungere l’URL API (problemi DNS, firewall, mancanza di connessione).
  • Se non usi le funzionalità di Academy, puoi anche disattivare temporaneamente il modulo ps_edition_basic, ma è sconsigliato in produzione se è parte dell’edizione base.
  • Il bug è stato segnalato anche su GitHub. Controlla se esiste una patch ufficiale nei rilasci futuri.

Conclusione

Il modulo ps_edition_basic ha un bug critico nel gestire dati nulli da API esterne. Fortunatamente, con una semplice modifica al codice, puoi mettere in sicurezza il tuo shop PrestaShop 8 e prevenire crash imprevisti.

Hai trovato utile questa guida? Seguimi per altri fix su PrestaShop, moduli custom e aggiornamenti di sistema.

approfondimenti

Privacy Policy