it-swarm.dev

Errore "Errore irreversibile: chiamata a una funzione membro getKeyName () su un non oggetto", ma senza tabella?

Scrivo un piccolo componente per esportare i dati da un componente del negozio, questo è il mio primo componente, ricevo l'errore "Errore irreversibile: chiamata a una funzione membro getKeyName () su un PATH\legacy\model\admin.php non oggetto su riga 885 ", ho trovato una soluzione, ma il mio problema è che non voglio una nuova tabella e la mia domanda è: come posso evitare una nuova tabella sql? Perché lavoro con tabelle di componenti già esistenti e non vengono modificate con il mio componente.

Le mie fonti:

http://forum.joomla.org/viewtopic.php?f=620&t=666986
http://stackoverflow.com/questions/21156707/fatal-error-call-to-a-member-function-getkeyname
http://stackoverflow.com/questions/12313272/error-call-to-a-member-function-getkeyname-component-for-joomla-2-5

Capisco da questa soluzione che ho bisogno di una nuova tabella, ma non ne ho bisogno ...

1
jExchange

JForm di solito esegue il mapping alle colonne di una tabella del database quando viene utilizzato con JModelAdmin, quindi se il nome di una colonna è add cerca Aggiungi come colonna in quella tabella .

Se si esamina il componente del contenuto (articoli) e si ispezionano alcuni dei campi del modulo, quindi si esamina la tabella del database per il contenuto e si vedrà che i loro nomi corrispondono. Se vuoi usare JForm il modo migliore è applicare la tua logica ad esso, quindi usa JModelLegacy con un controller per catturare e indirizzare il salvataggio sulla tua funzione di modello, piuttosto che sul valore predefinito.

Per praticamente ogni funzione in JModelAdmin aggiunge $table = $this->getTable(); per essere in grado di passare o recuperare i dati dalla tabella. Tuttavia con JModelLegacy non esiste una connessione diretta a JForm ma dai suoni vuoi solo il modo pulito di visualizzare i moduli, quindi è probabilmente meglio aggiungere quella logica alla tua vista classe comunque (il view.html.php)

Tuttavia, è possibile sovrascrivere le funzioni di salvataggio/recupero di JModelAdmin per utilizzarlo, ma tutto sommato potrebbe essere più efficace del semplice utilizzo di JModelLegacy secondo me. Ti impone di meno e ti dà la possibilità di personalizzare maggiormente il tuo codice se non stai usando il tipico modo Joomla di usare le tabelle.

4
Jordan Ramstad