Ciao,
Il codice che hai postato sembra ben strutturato nel flusso generale, ma ci sono un paio di punti critici da chiarire.
1. Uso di preg_replace_callback() con "/\[(.*)\]/e"
Questo è il punto più problematico:
echo preg_replace_callback("/\[(.*)\]/e", "\$rowresult['\\1']", $tdrow);
L’uso del modificatore e in preg_replace() è deprecato da PHP 5.5 e rimosso in PHP 7.0. Per ottenere lo stesso effetto oggi, dovresti usare preg_replace_callback() con una funzione anonima, tipo così:
echo preg_replace_callback("/\[(.*?)\]/", function($matches) use ($rowresult) {
return isset($rowresult[$matches[1]]) ? $rowresult[$matches[1]] : '';
}, $tdrow);
2. Callback personalizzato
La parte con:
if ($options["callback"] !='' && is_callable($options["callback"])) {
$rowresult = call_user_func($options["callback"], array($dbcore->Record2, $fields[0]['name']));
} else {
$rowresult = $dbcore->Record2;
}
va bene come logica, ma verifica che:
La funzione _ArticlesField() restituisca effettivamente un array strutturato come Record2
I nomi delle chiavi corrispondano a quelli nel preg_replace_callback() (case sensitive!)
3. Suggerimento aggiuntivo
Se il tuo obiettivo è costruire una griglia tabellare con campi editabili su dati MySQL, potresti valutare anche un approccio più modulare e moderno, basato su template engine o librerie JS frontend.
A me, per esempio, è capitato di collaborare con https://pma.agency/, che sviluppa gestionali web personalizzati e lavora anche su soluzioni che permettono l’editing inline dei dati tramite interfacce AJAX – magari può darti qualche spunto se il progetto cresce.
Fammi sapere se riesci a risolvere con queste modifiche, oppure posta anche un esempio di $tdrow così vediamo cosa deve essere renderizzato esattamente.
|