Это то, что я пытаюсь сделать:
Я сохраняю свой элемент в модели, затем вызываю метод, который может вызвать исключение, если что-то пойдет не так.
Если япоймать исключение, я хочу откат, это мое переопределение метода сохранения:
public function save($data) {
$db = JFactory::getDbo();
$db->transactionStart();
$retVal = parent::save($data);
if ($retVal) {
try {
$this->_doSomething();
$db->transactionCommit();
} catch (Exception $exc) {
$db->transactionRollback();
JFactory::getApplication('administrator')
->enqueueMessage($exc->getMessage(), 'error');
return false;// THIS MAKES ROLLBACK FAIL, TO MAKE IT WORK I HAVE TO COMMENT THIS.
}
}
return $retVal;
}
Это работает, только если мой метод возвращает true
в любом случае.
Для меня это должно бытьболее правильно, что метод в этом случае возвращает false
, потому что сохранение не выполнено и потому что, если оно возвращает true
, Joomla выводит вводящее в заблуждение сообщение, как если бы сохранение было успешным.Но если он выполняет откат каким-либо образом, он терпит неудачу.
Что делает откат неудачным, если метод save()
возвращает false
?