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.