Joomla.it Forum
Non solo Joomla... => Sviluppo => : GigiBuffon 19 Nov 2008, 16:49:17
-
Buon pomeriggio a tutti
Da poco stò seguendo una guida per lo sviluppo di un componente per Joomla 1.5, sono arrivato al punto dove inserisco la Funzione Salva:
function saveReview( $option )
{
global $mainframe;
$row =& JTable::getInstance('review', 'Table');
$post = JRequest::get( $post );
if (!$row->bind( $post ))
{
echo "<script> alert('".$row->getError()."');
window.history.go(-1); </script>\n";
exit();
}
$row->quicktake = JRequest::getVar( 'quicktake', '', 'post',
'string', JREQUEST_ALLOWRAW );
$row->review = JRequest::getVar( 'review', '', 'post',
'string', JREQUEST_ALLOWRAW );
if(!$row->review_date)
$row->review_date = date( 'Y-m-d H:i:s' );
if (!$row->store())
{
echo "<script> alert('".$row->getError()."');
window.history.go(-1); </script>\n";
exit();
}
$mainframe->redirect('index.php?option=' .
$option, 'Review Saved');
}
solo che quando lo vado a provare mi dà il seguente errore:
Fatal error: Call to a member function bind() on a non-object in C:\wamp\www\test\administrator\components\com_reviews\admin.reviews.php on line 44
Qualcuno saprebbe indicarmi la soluzione?
Grazie mille
-
Dice che row non è un oggetto...sicuro di averla dichiarata?
-
Grazie mille per la risposta, comunque scusa la mia ignoranza, ma row non la dichiaro in questa parte di codice:
$row =& JTable::getInstance('review', 'Table');
??? ???
grazie ancora
-
ahi ahi no mi sono espresso male, tu dichiari la variabile $row, e qui nessuno ci mette becco, ma una variabile è una cosa, un oggetto un altra.
Tu stai chiamando dei metodi ( ->bind ) per una variabile ( $row ) e non per un oggetto, che deve, bene o male, essere "inizializzato" con:
$row = new nomeClasse
Normalmente Joomla dichiara nuovi oggetti di suo, grazie al framework MVC tante cose sono già fatte, sta solo a te vedere come è chiamato l'oggetto in questione ;)
Guarda come salvare senza troppe complicazioni:
function save()
{
$model = $this->getModel('model_mio_componente');
if ($model->store($post)) {
$msg = JText::_( 'Project saved!' );
} else {
$msg = JText::_( 'Error saving project' );
}
$link = 'index.php?option=com_mio_componente';
$this->setRedirect($link, $msg);
}
capit?
-
Si, ho capito cosa dici,solo che non sò metterlo in atto ;D.
Il fatto è che ho lasciato perdere quella guida, e utilizzando quella presente su: http://www.copesflavio.com/blog/cms/joomla/tutorial-creare-un-componente-per-joomla-15/
mi dà lo stesso identico errore. Allora mi chiedo perchè mettono online queste guide se poi non funzionano?
Grazie comunque per il supporto, spero di trovare qualche esempio funzionante.
-
quello di flavio funziona benissimo, guarda qui (http://ventosullago.copesflavio.com/)
-
Si, ho rifatto il tutto e ho scaricato il codice completo, e ho notato che avevo creato la cartella Tables nella directory sbagliata... chiedo scusa per la superficialità, e ne approfitto per fare i complimenti a Flavio (grazie mi sei stato davvero di grande aiuto).