Ciao a tutti,
sto sviluppando una nuova estensione per Joomla! 2.5 e mi sono incagliato su un comportamento alquanto strano di J!2.5
Ho un controller che istanzia una view, il quale presenta in particolare due metodi: il metodo save() e il metodo apply().
Ebbene, quando la view richiama questi metodi (tramite Jtoolbar), entrambi i metodi salvano le modifiche inserite via form e poi rispettivamente tornano alla schermata principale (save) e mostrano i dati aggiornati (apply).
Il problema arriva quando si mostrano i dati salvati dopo l'apply: i campi vengono mostrati vuoti a causa del mancato caricamento del model di default della view.
Vi incollo i due file (il controller e la view), sperando che possano essere utili a spiegare ciò che forse non sono iuscito a far capire nelle righe precedenti
Controller
defined('_JEXEC') or die;
jimport('joomla.application.component.controlleradmin');
class QrManagerControllerSettings extends JControllerAdmin
{
public function __construct($config = array())
{
$this->view = 'settings';
parent::__construct($config);
}
public function getModel($name = 'Settings', $prefix = 'QrManagerModel')
{
$model = parent::getModel($name, $prefix, array('ignore_request' => true));
return $model;
}
function save()
{
//Salvo i dati
$this->apply();
//Torno alla schermata principale del backend del componente
$this->cancel();
}
function apply()
{
$model=$this->getModel();
$model->updateData();
$this->display();
}
function cancel()
{
$link= JRoute::_('index.php?option=com_qrmanager',false);
$this->setRedirect($link);
}
public function display($cachable = false, $urlparams = false)
{
$view= $this->getView($this->view, 'html');
$view->display();
}
}
[/size][size=78%]View[/size]
[/size]
[/size]defined('_JEXEC') or die;
jimport('joomla.application.component.view');
jimport( 'joomla.access.access' );
class QrManagerViewSettings extends JView
{
function display($tpl = null)
{
//Fase di update delle informazioni
$this->urlPrefix= $this->get('UrlPrefix');
$this->mainGroup = $this->get('MainGroup');
// Set the toolbar
$this->addToolBar();
// Display the template
parent::display($tpl);
}
protected function addToolBar()
{
JToolBarHelper::title(JText::_('COM_QRMANAGER_MANAGER_OBJECTS'));
JToolBarHelper::apply("settings.apply");
JToolBarHelper::save('settings.save');
JToolBarHelper::cancel("settings.cancel");
}
}
[/size]
[/size][size=78%]In pratica: quando la form viene mostrata all'accesso della pagina, i dati vengono mostrati correttamente, mentre dopo aver richiamato il metodo apply, essi vengono aggiornati nel db ma i campi della form sono vuoti e non viene caricato il model predefinito (l'array _model della view risulta vuoto).[/size]
[/size]
[/size][size=78%]Potete aiutarmi per favore? grazie di tutto in anticipo[/size]