Joomla.it Forum
Non solo Joomla... => Sviluppo => : franant 24 Aug 2010, 19:18:34
-
Ciao a tutti,
sono di nuovo qui con un'altra domanda...
Durante lo sviluppo del mio componente, riscontro questo errore nella view:
Fatal error: Call to a member function quantiAlbum() on a non-object in opt/lampp/htdocs/fatefelici/components/com_galleria/views/principale/view.html.php on line 14
.
La linea 14 del view.html.php contiene questo codice:
$numeroAlbum = $model->quantiAlbum();
Da quello che ho capito, è come se $model non lo vedesse come oggetto... eppure $model l'ho dichiarato così:
$model = &$this->getModel();
e nel file del model, la funzione quantiAlbum() è dichiarata così:
function quantiAlbum()
{
$db =& JFactory::getDBO();
$queryNumAlbum = "SELECT id FROM #__galleria_album";
$db->setQuery($queryNumAlbum);
$db->query();
$numRighe = $db->getNumRows();
return $numRighe;
}
Sinceramente non riesco a trovare la soluzione a quest'errore...
Che potrebbe essere?
Grazie mille
Francesco
-
prova a verificare di includere il file model corretto (attenzione ai nomi); in caso metti un die(); all'inizio del file e lo vedi subito.
il sql è concettualmente sbagliato, se ti serve il numero delle righe devi usare select count(*): è inutile sprecare banda, memoria e caricare il server per recuperare l'intero record set.
ciao,
marco
-
Ciao, potresti dirmi come hai dichiarato la classe model?
Hai dichiarato il costruttore?
-
prova a verificare di includere il file model corretto (attenzione ai nomi); in caso metti un die(); all'inizio del file e lo vedi subito.
Si, ho verificato, ed il model giusto viene caricato correttamente
il sql è concettualmente sbagliato, se ti serve il numero delle righe devi usare select count(*): è inutile sprecare banda, memoria e caricare il server per recuperare l'intero record set.
Ok, cambiato. Effettivamente era un po' che non mettevo mano all'SQL, e mi ero dimenticato della funzione count()... XD
Ciao, potresti dirmi come hai dichiarato la classe model?
Hai dichiarato il costruttore?
Ho usato la dichiarazione standard usata nel tutorial di joomla!, quindi, nel mio caso
class GalleriaModelGalleria exdends JModel
{
//E le varie funzioni della classe
}
E ho lo stesso problema sia con che senza costruttore (e tra l'altro nel costruttore richiamo semplicemente parent::__construct();)
Ciao
Francesco
-
Adesso, non so perchè, mi da semplicemente una pagina bianca...
Ciao
Francesco
-
non è che ti sei dimenticato il die() di cui sopra?
prova ad attivare il debug e prova a chiamare il metodo getName() sul model, altro non mi viene in mente.
ciao,
marco
-
Ho usato la dichiarazione standard usata nel tutorial di joomla!, quindi, nel mio caso
class GalleriaModelGalleria exdends JModel
{
//E le varie funzioni della classe
}
E ho lo stesso problema sia con che senza costruttore (e tra l'altro nel costruttore richiamo semplicemente parent::__construct();)
Ciao, parent::__construct() è fondamentale, GalleriaModelGalleria estende JModel, senza parent::__construct() GalleriaModelGalleria non istanzia la classe Jmodel e non la estende, quindi dovrebbe essere per questo che non ti funziona.
Ho fatto una prova su un componente che ho creato e se tolgo parent::_construct mi da il tuo errore ovvero mi dice che sto chiamando una funzione su una variabile che non è un oggetto.
Quin di assicurati che la funzione
function __construct() {
parent::__construct();
}
sia dichiarata.
Spero di esserti stato di aiuto
-
non è che ti sei dimenticato il die() di cui sopra?
c'è... però continua a darmi la pagina bianca...
prova ad attivare il debug e prova a chiamare il metodo getName() sul model, altro non mi viene in mente.
idem, pagina bianca...
Ciao, parent::__construct() è fondamentale, GalleriaModelGalleria estende JModel, senza parent::__construct() GalleriaModelGalleria non istanzia la classe Jmodel e non la estende, quindi dovrebbe essere per questo che non ti funziona.
Sisi, il parent::__construct() c'è. Adesso però non ho più il Fatal Error, ma semplicemente una pagina bianca... adesso sto rivedendo tutto il codice del model, del view e dell'entry point, per vedere se ho dimenticato qualcos'altro... cosa che sicuramente è successa, altrimenti non avrei la pagina bianca
Grazie a tutti
Ciao
Francesco
-
ok, problema risolto. Era una cosa stupidissima. In pratica nel file di template del componente usavo un <div>, che a quanto pare a joomla non piace. L'ho sostituito con un paragrafo, e funziona.
Grazie a tutti per il supporto. Siete stati di grande aiuto :)
Grazie mille
Ciao
Francesco