Joomla.it Forum
Non solo Joomla... => Sviluppo => : giovi 28 Jan 2014, 21:43:22
-
componente mvc. Nel controller sovrascrivo il metodo save() con questo:
public function save($key = null, $urlVar = null)
{
// Get the original POST data
$original = JRequest::getVar('jform', array(), 'post', 'array');
//Altero il valore di una variabile
$original["filename"] = "1";
// Save it back to the $_POST global variable
JRequest::setVar('jform', $original);
return parent::save($key, $urlVar);
}
Sembra che nella variabile jform del post effettivamente i valori siano corretti (controllato con print_r) ma al termine del salvataggio dell'elemento i dati inseriti nel database non sono stati minimamente toccati e restano quelli inseriti dall'utente!
Lavoro su Joomla! 3 :(
-
ciao,
in realtà su J3 dovresti usare jinput, non jrequest.
comunque jrequest::setvar accetta solo una stringa come valore, a differenza del metodo omonimo di jinput.
ciao,
marco
-
grazie marco,
sto tentando anche con jinput ma non riesco a venire a capo del problema:
public function save($key = null, $urlVar = null)
{
$jinput = JFactory::getApplication()->input;
// Get the original POST data
$original = $jinput->get('jform',NULL,NULL);
$original["title"] = "1";
// Save it back to the $_POST global variable
$jinput->set('jform', $original);
parent::save($key,$urlVar);
return;
}
Se faccio un var_dump subito dopo jinput->set sulla variabile jinput->get(jform) ottengo i valori alterati ma nel salvataggio mi ritrovo sempre quelli iniziali!
-
se guardi il codice che vai ad estendere cioe save di JControllerForm vedi che nel metodo save fa riferimento a post e non globalmente
$data = $this->input->post->get('jform', array(), 'array');
quindi risolvi banalmente con
$jinput->post->set('jform', $original);
nella tua funzione save
ciao
-
Aha! Grazie Marco e grazie Simone, grazie a voi l'override funziona come dovrebbe ed in linea con le api di Joomla! 3 :)
Questo il codice funzionante per chi avesse lo stesso problema:
public function save($key = null, $urlVar = null)
{
$jinput = JFactory::getApplication()->input;
// Get the original POST data
$original = $jinput->get('jform',NULL,NULL);
$original["campo"] = "nuovo valore";
// Save it back to the $_POST global variable
$jinput->post->set('jform', $original);
parent::save($key,$urlVar);
return;
}