В вашем контроллере вы можете:
if ($model->store($post)) {
$msg = JText::_( 'Yes!' );
} else {
// stores the data in your session
$app->setUserState('com_mycomponent.edit.mymodel.data', $validData);
// Redirect to the edit view
$msg = JText::_( 'Error :(' );
$this->setError('Save failed', $model->getError()));
$this->setMessage($this->getError(), 'error');
$this->setRedirect(JRoute::_('index.php?option=com_mycomponent&view=myview&id=XX'), false));
}
, затем вам нужно будет загрузить данные из сессии с чем-то вроде:
JFactory::getApplication()->getUserState('com_mycomponent.edit.mymodel.data', array());
обычно это загружается в методе "loadFormData "в вашей модели.Где загрузить эти данные, будет зависеть от того, как вы реализуете свой компонент.Если вы используете форму API Joomla, то вы можете добавить следующий метод к вашей модели.
protected function loadFormData()
{
// Check the session for previously entered form data.
$data = JFactory::getApplication()->getUserState('com_mycomponent.edit.mymodel.data', array());
if (empty($data)) {
$data = $this->getItem();
}
return $data;
}
РЕДАКТИРОВАТЬ:
НО, обратите внимание, что API Joomla уже может сделать все это для васесли ваш контроллер наследует от «JControllerForm», вам не нужно переписывать метод сохранения.Лучший способ создать ваш компонент - скопировать то, что находится в основных компонентах Joomla, например, com_content